Add*_*dem 6 c compiler-warnings qt-creator
使用 Qt Creator 我制作了这些纯 C 文件只是为了测试我的理解:
main.c
#include <stdio.h>
#include "linked.h"
int main()
{
printf("Hello World!\n");
printf("%d", linked());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
linked.h
#ifndef LINKED_H_
#define LINKED_H_
int linked(void);
#endif // LINKED_H
Run Code Online (Sandbox Code Playgroud)
linked.c
int linked()
{
return 5;
}
Run Code Online (Sandbox Code Playgroud)
所述IDE显示上的行的警告linked.h
在其间#define LINKED_H_
和int linked(void);
其读取
ISO C requires a translation unit to contain at least one declaration
Run Code Online (Sandbox Code Playgroud)
我对这意味着什么的最佳猜测是任何头文件或其他 C 文件,如果它在一个项目中,应该在主文件中的某个地方至少使用一次。我试过搜索警告,但如果在其他地方已经回答了这个问题,我就无法理解答案。在我看来,我已经使用了这个linked
函数,所以它不应该给我这个警告。任何人都可以解释发生了什么?
该程序完全按预期编译和运行。
我认为问题在于你不#include "linked.h"
从linked.c
. 当前linked.c
文件没有任何声明;它只有一个函数定义。
要解决此问题,请将此行添加到linked.c
:
#include "linked.h"
Run Code Online (Sandbox Code Playgroud)
我不知道为什么它说这是一个问题linked.h
,但是您指出的行号恰好是linked.c
.
当然,这可能就是全部;巧合。因此,如果这不起作用,请尝试在此文件中放入某种外部声明。最简单的方法是包含一个标准头文件,例如stdio.h
. 不过,我仍然建议您#include "linked.h"
从内部进行linked.c
。