【发布时间】:2012-04-12 01:59:43
【问题描述】:
我对包含文件及其管理方式有以下好奇心(GCC):
假设我有一个源文件 foo.c 和三个头文件 foo.h、foo_cfg.h 和 foo_int。 h。
在 foo.c 中:
#include "foo.h"
#include "foo_int.h"
在 foo.h 中:
#include "foo_cfg.h"
在 foo_cfg.h 中:
/* no inclusions */
#define FOO BAR
在 foo_int.h 中:
/* no inclusions */
#define BAR 0U
我想知道为什么编译成功。 foo_cfg.h 文件不应该抱怨它不知道 BAR 符号吗?
此外,我还有另一个源文件 bar.c,它只包含 foo.h 文件并且仍然有效。
备注:这是来自我正在使用复杂的构建环境进行的一个项目,我不需要太多细节。除了指定header files的位置之外,会不会是构建环境对此有影响?
可能是这个问题真的很愚蠢,或者我忽略了一些东西,如果是这样,我深表歉意。
【问题讨论】: