首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目的:#define、#include、#undef

目的:#define、#include、#undef
EN

Stack Overflow用户
提问于 2008-12-02 15:42:23
回答 6查看 2.2K关注 0票数 3

C文件中这个结构的用途是什么?

代码语言:javascript
复制
#define _TIMERC  
#include "timer.h"  
#undef _TIMERC  

我知道用于防止多个头文件包含的保护措施。然而,这似乎不是正在发生的事情。

谢谢!

EN

回答 6

Stack Overflow用户

发布于 2008-12-02 16:10:24

这里有一个场景来说明...

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

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

代码语言:javascript
复制
#define _TIMERA   
#include "timer.h"   
#undef _TIMERA 

在另一个模块(lap_time.h)中,正在使用定时器C进行其间隔定时

代码语言:javascript
复制
#define _TIMERC  
#include "timer.h"  
#undef _TIMERC  

当rpm_reader调用tick_count()时,它将从定时器A返回节拍计数,而lap_time将从定时器C获取其计数。

(我很抱歉回答了我自己的问题,但是问这个问题帮助我得到了这个启示。)

票数 5
EN

Stack Overflow用户

发布于 2008-12-02 15:48:58

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

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

票数 4
EN

Stack Overflow用户

发布于 2008-12-02 15:45:26

我想知道会不会是这样:

本例中的头文件旨在允许在每个#include之前建立具有不同定义的多个include。

如果在timer.h中有一个代码块(中断代码)用于微控制器中每个定时器的定时器A、B和C。在某些情况下,一个模块需要定时器A,而另一个模块需要定时器C。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/334371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档