在.c文件中使用的宏在不添加定义它的头文件的情况下进行编译

时间:2014-01-02 08:27:08

标签: c macros header-files

我有一个大项目,其中一些宏被定义为:

#define RECORD_COUNT 141 // in one file file1.h

另一个文件说file2.c正在使用这个宏。但是file2.c不包括file1.h。

因此有可能在编译第一个文件时得到预编译的是file1.h,宏被添加到全局范围。这使得预编译file2.c成为可能吗?

2 个答案:

答案 0 :(得分:0)

在您将宏定义用于某处之前,您的宏定义很可能正在编译。

只是为了检查您是否可以使用pragma message检查编译器是否触及该代码。 http://msdn.microsoft.com/en-us/library/x7dkzch2.aspx

答案 1 :(得分:0)

您无需直接包含头文件即可使用它。也可以有间接包含。

例如,

假设file1.h有

#define RECORD_COUNT 141

file2.h有,

#include "file1.h"
...
...

如果file2.c有#include "file2.h",则可以在该include语句之后使用file2.c中'file1.h'中的任何宏或定义。