【发布时间】:2018-04-03 16:09:02
【问题描述】:
C 文件定义:
#include <stdint.h>
void foo(int i)
{
if(i>0) bar();
}
H文件声明:
#ifndef FILE_H
#define FILE_H
void foo(void);
#endif FILE_H
主要:
#include "file.h"
int main(void)
{
foo();
}
由于某些抽象原因,file.h 不包含在 file.c 中。
为什么在这种特殊情况下 GCC 不生成任何警告?
【问题讨论】:
-
你在 .c 中包含 .h 吗?
-
我看不到任何定义,我只看到声明...
-
您必须在定义函数的位置和使用函数的位置都包含标题。你没有,所以编译器无法警告。标头是允许编译器进行必要的交叉检查以确保代码基本健全的粘合剂。
-
出于抽象原因,您破坏了使用标头的主要原因之一?请详细说明。