免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2070 | 回复: 6
打印 上一主题 下一主题

宏定义的问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-09 16:10 |只看该作者 |倒序浏览
#ifdef DEBUG
#define ZERO(Var)                                                              \
memset(&(Var), 0, sizeof((Var)));

#else
#define ZERO(Var)    //这里什么意思,如果不是DEBUG,这个ZERO就不起任何作用?

#endif

论坛徽章:
0
2 [报告]
发表于 2009-01-09 16:23 |只看该作者
是啊,人家就是这么定义的。要结合具体使用这个宏的地方才能理解为什么这么定义吧

论坛徽章:
0
3 [报告]
发表于 2009-01-09 17:27 |只看该作者
else后定义为空语句啊

论坛徽章:
0
4 [报告]
发表于 2009-01-09 17:48 |只看该作者

回复 #1 dxbh 的帖子

在后面的用法更多的可以是用来定义一个名称.
 即定义这个名称以后,可用于#ifdef/#ifndef语句的,同时不让它来替换任何内容,就相当于设置为空一样.
 这种用法最好结合程序的上下文来看好一点.

论坛徽章:
3
天蝎座
日期:2014-10-25 13:44:312015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:48:31
5 [报告]
发表于 2009-01-10 01:39 |只看该作者
原帖由 dxbh 于 2009-1-9 16:10 发表
#ifdef DEBUG
#define ZERO(Var)                                                              \
memset(&(Var), 0, sizeof((Var)));

#else
#define ZERO(Var)    //这里什么意思,如果不是DEBUG,这个 ...



这个代码,不知道是不是楼主拷贝再贴过来的

memset后面的分号是多余的吧,

另外,从实际应用来说,不明白为啥在DEBUG下就memset为0,而release却不memset,
莫非,楼主把ifdef和ifndef记错了,以便在DEBUG模式下验证XX变量未初始化?

论坛徽章:
0
6 [报告]
发表于 2009-01-10 16:39 |只看该作者
就是替换成什么都没有。。

论坛徽章:
0
7 [报告]
发表于 2009-01-11 00:59 |只看该作者
原帖由 ilex 于 2009-1-10 01:39 发表



这个代码,不知道是不是楼主拷贝再贴过来的

memset后面的分号是多余的吧,

另外,从实际应用来说,不明白为啥在DEBUG下就memset为0,而release却不memset,
莫非,楼主把ifdef和ifndef记错了,以便 ...



不能算多余,只不过没有这个分号,显得更像函数而已
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP