繁体   English   中英

错误:没有以前的功能原型。 为什么我收到此错误?

[英]Error: No previous prototype for function. Why am I getting this error?

// 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中看到我的原型

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

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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM