我对包含文件及其如何被管理(使用GCC)有以下好奇:假设我有一个源文件foo.c和三个头文件foo.h、foo_cfg.h和foo_int.h。
在foo.c中:
在 foo.h 文件中:
在 foo_cfg.h 文件中:
在 foo_int.h 文件中:
我很好奇为什么编译会成功。 foo_cfg.h 文件不应该抱怨它不认识 BAR 标记吗?
此外,我还有另一个源文件bar.c,它只包括foo.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文件,但仍然可以正常工作。
备注:这是一个具有复杂构建环境的项目,我没有太多细节。除了为
头文件
指定位置外,构建环境是否还有其他影响?如果我的问题真的很愚蠢或者我忽略了什么,请原谅我。
gcc -E file.c
命令输出在所有预处理完成后的文件,但是如果包含任何标准头文件,这可能会变得非常冗长。 - BoBTFish