预处理器如何进行扩展(定义在包含的头文件中找到的宏)

时间:2014-04-22 10:08:02

标签: c scope macros include c-preprocessor

我有一个包含常量F_CPU的头文件,我使用宏保护

header.h

#ifndef F_CPU
#define F_CPU  1000000UL
#endif

和source.c文件

#define F_CPU 16000000UL
#include "header.h"

第一个宏(在c文件中)如何扩展未包含的值?

2 个答案:

答案 0 :(得分:4)

使用预处理器的-E选项来跟踪发生的情况。您在source.c的第一行中定义了F_CPU宏,然后在包含头文件时,由于#ifndef保护,标题中的宏定义不会发生。请注意,代码中没有宏扩展。使用宏时会发生扩展。

答案 1 :(得分:0)

.c文件中的第一个#define是宏定义,在这个地方完全合法。宏定义不仅限于包含文件 - 它们也可能出现在.c文件中。