| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 507 人关注过本帖
标题:求助这段#define与条件编译代码
只看楼主 加入收藏
tieshou200
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-7-2
收藏
 问题点数:0 回复次数:9 
求助这段#define与条件编译代码
1#ifdef MODEINIT_DO_C
2#define EXT_DO_C
3#else
4#define EXT_DO_C extern
5#endif
不明白的是第二行为什么可以不带后缀,而且这种情况下的意思是什么,求教!
搜索更多相关主题的帖子: 而且 
2015-07-02 17:22
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
定义一个宏,主要用在条件编译里

一片落叶掉进了回忆的流年。
2015-07-02 17:40
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:0 
缺省值 0x0000
2015-07-02 21:02
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用erty1001在2015-7-2 21:02:09的发言:

缺省值 0x0000
想当然的吧?没有什么缺省值
2015-07-03 09:02
w2009w
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:190
专家分:542
注 册:2015-4-20
收藏
得分:0 
去看教材吧,很基础的知识!一看就懂,
2015-07-03 09:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
知道
#define PI

#define PI 3.14
有什么不同吗?

授人以渔,不授人以鱼。
2015-07-03 09:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
顺便吐一下,你说到“后缀”这个词,就表明你学的很悬了。

授人以渔,不授人以鱼。
2015-07-03 09:20
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:0 
回复 7楼 TonyDeng
愿闻其详 帮忙解析一下 #define C_A   
                      #define  C_A   01
的区别~
2015-07-03 21:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用erty1001在2015-7-3 21:47:44的发言:

愿闻其详 帮忙解析一下 #define C_A   
                      #define  C_A   01
的区别~


前者是定义“存在一个宏”,后者是给这个宏以具体的替换内容。前者是不需要理会内容的,它不用于文本替换,用于文本处理,预处理器在处理文本的时候,当发现前者的语句,就在内存中打开一个开关,记忆存在这么一个开关值,通常当作逻辑真,然后,在文本的后面,当遇到#ifdef C_A……#endif这样的预处理指令时,就把块内的代码写出到预处理结果文本中,其功能与编程的if语句相当。这个作用,一般是针对移植平台的,比如调试版本的代码和发布版本不同、Windows下的代码和Linux下的又不同,都可以用这种开关切换(注意,编译器编译的是预处理輸出后的文本,被#ifdef/#endif筛掉的代码是绝不存在于最终程序中的),其好处是把所有版本的代码都写在同一个源代码文档中,有些共同部分,则不用反复写,而不同环境之间的差异,也可以一目了然,调试和修改起来也较方便。

最常见的应用,是在头文件中:
程序代码:
#ifndef C_A
#define C_A

……

#endif

这个宏是保护头文件不被重复包含的(在vc中,有专用的开关#pragma once)。

授人以渔,不授人以鱼。
2015-07-05 20:39
wu53126553
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-9-18
收藏
得分:0 
这是防止两重定义的经典方式~~
2015-07-05 22:57
快速回复:求助这段#define与条件编译代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025029 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved