C90编译器抱怨没有原型功能警告

时间:2018-07-26 14:28:59

标签: c compilation compiler-warnings

我在文件includes.h中声明了一个函数hello()

hello()函数在文件source.c中定义

在main.c文件中调用hello()函数

includes.h 包含以下代码

    /*
     * includes.h
     *
     *  Created on: Jul 26, 2018
     *      Author: salim
     */
    #ifndef T_HEADER_H_
    #define T_HEADER_H_

    #include <stdio.h>
    int hello();


    #endif /* T_HEADER_H_ */

source.c 包含以下代码

    /*
     * source.c
     *
     *  Created on: Jul 26, 2018
     *      Author: salim
     */
    #include <stdio.h>
    #include "includes.h"
    int hello()
    {
       printf("Hello, World!");
       return 0;
    }

main.c 包含以下代码

    /*
     * main.c
     *
     *  Created on: Jul 26, 2018
     *      Author: salim
     */
    #include <stdio.h>
    #include "includes.h"
    int main()
    {
       hello();
       return 0;
    }

编译通过,但是编译器生成一条信息消息,内容为main.c(11) : C0200 (I) No prototype function

我缺少什么来摆脱信息/警告消息?我知道一种解决方法可能是显示警告/信息消息,但我不想走那条路线。

1 个答案:

答案 0 :(得分:2)

在调用时,它正式是“无原型功能”。 int hello()不是原型。它是“非原型”类型的函数声明。这是K&R风格的声明。

此函数的原型声明看起来像

int hello(void);

这是编译器试图告诉您的(还是存在其他问题)是另一个问题。