目的:#define,#include,#undef

Jef*_*ffV 3 c embedded include

这个构造在ac文件中的目的是什么?:

#define _TIMERC  
#include "timer.h"  
#undef _TIMERC  
Run Code Online (Sandbox Code Playgroud)

我知道防止多个包含头文件的警卫.但这似乎并没有发生.

谢谢!

Gre*_*ers 5

通常,库头文件会有多个选项,这些选项由宏定义启用和禁用。这将启用这样的选项。

更典型的是,通过配置构建系统将-D_TIMERC添加(例如使用 gcc)到编译器命令行,可以在全局范围内设置这些值。


Jef*_*ffV 5

这是一个场景来说明......

假设timer.h提供了一个宏tick_count(),它返回发生的定时器中断的数量.

一个模块(rpm_reader.h)使用定时器A进行间隔定时:

#define _TIMERA   
#include "timer.h"   
#undef _TIMERA 
Run Code Online (Sandbox Code Playgroud)

在另一个模块(lap_time.h)中使用定时器C作为其间隔定时

#define _TIMERC  
#include "timer.h"  
#undef _TIMERC  
Run Code Online (Sandbox Code Playgroud)

当rpm_ader调用tick_count()并且lap_time将从计时器C获得计数时,rpm_reader将从计时器A返回计时器计数.

(我对回答我自己的问题表示歉意,但是问这个问题有助于我得出这个启示.)