我有一个包含常量F_CPU的头文件,我使用宏保护
header.h
#ifndef F_CPU
#define F_CPU 1000000UL
#endif
和source.c文件
#define F_CPU 16000000UL
#include "header.h"
第一个宏(在c文件中)如何扩展未包含的值?
答案 0 :(得分:4)
使用预处理器的-E选项来跟踪发生的情况。您在source.c的第一行中定义了F_CPU宏,然后在包含头文件时,由于#ifndef保护,标题中的宏定义不会发生。请注意,代码中没有宏扩展。使用宏时会发生扩展。
答案 1 :(得分:0)
.c文件中的第一个#define
是宏定义,在这个地方完全合法。宏定义不仅限于包含文件 - 它们也可能出现在.c文件中。