问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于#define的用法问题

发布网友 发布时间:2022-05-09 22:24

我来回答

3个回答

热心网友 时间:2023-10-25 02:46

#ifdef OS_GLOBALS....................................1
#define OS_EXT........................................2
#else..................................................3
#define OS_EXT extern................................4
#endif.................................................5

意思就是说,如果 OS_GLOBALS被定义,则本文件中的 OS_EXT被
替换为空(被忽略), 如果 OS_GLOBALS未被定义,则本文件中的
OS_EXT 被替换为 extern关键字. 意义比较明确, 就是给出了
本文件中哪些变量和函数,在何时需要使用 extern引用 (取决
于其他文件中有无定义 OS_GLOBALS.
为方便你理解, 举个例子.
现在有两文件 AAA.c和 BBB.c

AAA.c内容是
#define OS_GLOBALS

BBB.c内容是
#ifdef OS_GLOBALS
#define OS_EXT
#else
#define OS_EXT extern
#endif
OS_EXT void function1(void);

如果AAA.c先于BBB.c编译时,OS_GLOBALS被定义,在BBB.c里,实际上是
void function1(void); // 声明了自己的函数
如果BBB.c先于AAA.c编译,则OS_GLOBALS被定义,在BBB.c里,实际上是
extern void function1(void); // 声明了外部的一个函数.

另外,你想了解的比较重要的是,为什么define后面可以只有一个名字,这个语句的意思就是,将XXXX替换为空(从文本上忽略).比如
#define OS_EXT
意思就是说,在本文件中,凡OS_EXT文本串,在编译时都被替换成空白,被忽略,或者说删除.然而,这不影响它作为#ifdef判断的有效性,OS_EXT仍然是一个被define过的东西.就这个意思,应该理解了吧.

热心网友 时间:2023-10-25 02:47

#define 后面不一定要跟第2个操作数的,没有它的话就是无值了,只表示第1操作符号已定义。如果成为已定义的,那么#ifdef就会是真,#ifndef为假。

#ifdef OS_GLOBALS....................................1
#define OS_EXT........................................2
如果在#ifdef OS_GLOBALS前有过一句#define OS_GLOBALS,那么就会执行#define OS_EXT。否则不执行。

热心网友 时间:2023-10-25 02:47

把空格后面的变量定义成空格前面的量
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 你听说过埃及的金字塔吗?它是用来做什么的呢? 埃及金字塔有什么用! 关于#define的用法 金字塔是干什么用的?何时修建的? 埃及的金字塔是用来做什么的 可怕的埃及金字塔用途,它是用来干什么的? 世界上的谜团之一,埃及的金字塔有什么作用? 金字塔最早是用来干什么? 我用的office2007 为什么别人给我发的excel文件后缀是.xls 我打不开呢? 埃及金字塔干什么用的 金字塔的真正用途是什么? 埃及金字塔是用来做什么 埃及金字塔是干嘛的 埃及金字塔的用途是什么?它象征着什么? 手机怎么边玩游戏边听歌? 金字塔是用来干什么的? 西安盈鑫消防设备有限公司怎么样? 冷库需要做喷淋吗 冷库喷淋装置有哪些作用 win7系统安装不了区位输入法,怎么办? WORD用不了!怎么办? 古代埃及的金字塔是什么意思? 埃及的金字塔是用来干什么的 C# define怎么使用 电脑显示屏打不开!主机运转正常!怎么回事啊! 有句话说 少不读水浒,老不读三国。男不看西游,女不看红楼。 怎么解释?求详解 老不看三国,少不看水浒,年轻人不看红楼,有没有道理呢? 少不看水浒,老不看三国,男不看红楼,女不看西厢 为什么都说老不看三国,少不看水浒,男不看西游,女不看红楼? 为什么说少不看红楼,老不看三国? 为什么老不看三国,少不看水浒,男不看西游,女不看红楼? 为何说老不看三国,少不看水浒,男不看西游,女不看红楼? 为什么说"少不看水浒,老不看三国,男不看红楼,女不看西厢 晋江大写拼音 晋江职校的拼音 福建省晋江市陈埭岸中的“埭”怎么读? 晋江市标代表什么意思? 泉州的行政区划分 福建省泉州市晋江市陈埭镇洋埭村七一中路英文地址怎么写 中国城市拼音有重复的有哪些?包括地市级县市级城市名称 墨香铜臭读音是什么?