错误:以前没有函数原型。 为什么我收到此错误?

// 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  #include  #include "screen.h" #if PLATFORM == MAC #include  void screen_init(){ erase(); } #endif 

我不明白为什么它没有在screen.h中看到我的原型

任何建议/提示表示赞赏!

ISO / IEC 9899:TC2 – 6.2.1.2:
函数原型是声明其参数类型的函数的声明。

函数声明中的空参数列表表示参数的数量和类型未知。 您必须使用void关键字明确指出该函数不带参数。 否则,您的函数声明不会被视为有效的原型。

 void screen_init(void); 

几分钟前我遇到了类似的错误。 在头文件中添加了相关函数声明后,错误消失了。
另外,有人说取消编译选项’-Wmissing-prototypes’应该有效,但我没有尝试过。 祝好运。

我今天刚遇到这个问题。

我定义了一个内部使用的函数

 void func(void) { } int main(void) { func(); } 

这会给我这个警告。 我不得不在文件的开头添加原型以消除警告。

 void func(void); void func(void) { } int main(void) { func(); }