Ошибка: нет предыдущего прототипа для функции. Почему я получаю эту ошибку?
//screen.h
#ifndef screen_h
#define screen_h
#define MAC 1
#define WIN 2
#define LNX 3
#ifdef PLATFORM
# undef PLATFORM
#endif
#define PLATFORM MAC
void screen_init();
#endif
//screen.c
#include <string.h>
#include <stdlib.h>
#include "screen.h"
#if PLATFORM == MAC
#include <curses.h>
void screen_init(){
erase();
}
#endif
Я не понимаю, почему он не видит мой прототип в screen.h
Любые предложения/подсказки приветствуются!
Ответы
Ответ 1
ISO/IEC 9899: TC2 - 6.2.1.2:
Прототип функции - это объявление функции, объявляющей типы ее параметров.
Пустой список аргументов в объявлении функции указывает, что количество и тип параметров неизвестны. Вы должны явно указать, что функция не принимает аргументов с помощью ключевого слова void
. В противном случае объявление вашей функции не считается допустимым прототипом.
void screen_init(void);
Ответ 2
Я встретил эту подобную ошибку минут назад. После того, как я добавил объявление релятивированной функции в файл head, ошибка исчезла.
Кроме того, некоторые говорили, что отмена опции компиляции '-Wmissing-prototypes' должна работать, но я этого не пробовал. Удачи.