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

问题描述 投票:0回答:3

//屏幕.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

//屏幕.c

#include <string.h>
#include <stdlib.h>

#include "screen.h"

#if PLATFORM == MAC

#include <curses.h> 

void screen_init(){
    erase();
}

#endif

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

如有任何建议/提示,我们将不胜感激!

c prototype
3个回答
68
投票

ISO/IEC 9899:TC2 - 6.2.1.2:
函数原型是函数的声明,它声明了其参数的类型。

函数声明中的空参数列表表示参数的数量和类型未知。您必须使用

void
关键字明确指示该函数不带参数。否则你的函数声明不算是有效的原型。

void screen_init(void);

4
投票

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


4
投票

我今天才遇到这个问题。

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

void func(void) {
}

int main(void) {
    func();
}

这会给我这个警告。 我必须在文件开头添加原型才能消除警告。

void func(void);

void func(void) {
}

int main(void) {
    func();
}
© www.soinside.com 2019 - 2024. All rights reserved.