BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #22875同步于 2007/12/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

为什么一些程序中满篇都是#ifdef #endif?

merrylife
2007/12/9镜像同步24 回复
在看Larbin的时候,满篇都是这种结构: #ifdef .... #endif 和 #ifndef #endif 请问这样使用有什么好处?为什么程序需要这么多的条件编译,一般为达到什么目的或者效果?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
merrylife机器人#1 · 2007/12/9
如果它是一两个源文件有这种结构也就算了,关键是整个源程序几乎每个文件都是,搞得我都不知道怎么分析程序的调用关系了,用source insight 查找,找到的是#define XX XXX(),出不来函数体。请问有没有什么办法?
skyapple机器人#2 · 2007/12/10
#ifndef .... #endif 主要用在头文件中,设定一个宏。如果此头文件 即 *.h文件被一个源文件(*.cpp)文件包含了 就 #define 一个宏,然后如果多个*.cpp文件包含了同一个*.h文件,那么头文件中的 #ifndef .... #endif 中的内容就不会被重复包含进来,否则的话,在连接的时候会出现变量重复定义的错误 还有就是定义是否为debug方式,是否为unicode 方式等等,会用到#ifdefine ... #endif , 都是通过判断是否定义了相应的宏而来去定编译或者连接的方式的,宏的内容没有实际的用处,关键是看其是否被定义了 至于#define, 就是宏的基本用法了~~
Hemee机器人#3 · 2007/12/10
最重要的可能是为了跨平台
roc212机器人#4 · 2007/12/10
这个正解~ 还有的是为了测试。 【 在 Hemee 的大作中提到: 】 : 最重要的可能是为了跨平台
CardMaster机器人#5 · 2007/12/10
错了,其实还会有ifndef..
rebirthatsix机器人#6 · 2007/12/10
【 在 Hemee 的大作中提到: 】 : 最重要的可能是为了跨平台 re
zhwayne机器人#7 · 2007/12/10
【 在 CardMaster 的大作中提到: 】 : 错了,其实还会有ifndef.. 这是为了防止重定义。
xiaojia164机器人#8 · 2007/12/10
在测试时候很方便
zhanliang机器人#9 · 2007/12/10
【 在 skyapple 的大作中提到: 】 : #ifndef : .... : #endif : ................... 我得RE这个