【发布时间】:2014-01-02 08:27:07
【问题描述】:
我有一个大型项目,其中一些宏定义为:
#define RECORD_COUNT 141 // in one file file1.h
另一个文件说 file2.c 正在使用这个宏。但是file2.c不包括file1.h。
所以有没有可能在编译第一个文件时预编译是 file1.h 并且宏被添加到全局范围。这使得预编译file2.c成为可能?
【问题讨论】:
-
它可能会通过其他包含间接包含在内。
-
“另一个文件说 file2.c 正在使用这个宏”是什么意思? “宏被添加到全局范围”是什么意思?宏扩展是在预处理阶段完成的——没有编译,没有作用域,一个文件无法判断另一个文件是否正在使用宏。
-
我的意思是如果在一个文件(file1)中定义了一个宏,我相信预处理和编译是按照编译列表中提到的顺序进行的。因此,在这种情况下,宏在一个文件中定义并在另一个文件中使用,即使该文件不包含在内,预编译过程是否有可能替换第二个文件中的宏?????
标签: c macros header-files