免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 C/C++ #undef
最近访问板块 发新帖
查看: 8482 | 回复: 8
打印 上一主题 下一主题

[C] #undef [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-06 12:23 |只看该作者 |倒序浏览
纯粹的#undef是什么意思?

一般来说,#undef后面会跟着宏名,如

#undef identifier

但我见到这种用法,

#undef

问下,这是什么意思?

论坛徽章:
36
CU大牛徽章
日期:2013-09-18 15:24:20NBA常规赛纪念章
日期:2015-05-04 22:32:03牛市纪念徽章
日期:2015-07-24 12:48:5515-16赛季CBA联赛之辽宁
日期:2016-03-30 09:26:4715-16赛季CBA联赛之北控
日期:2016-03-30 11:26:2315-16赛季CBA联赛之广夏
日期:2016-05-20 15:46:5715-16赛季CBA联赛之吉林
日期:2016-05-24 11:38:0615-16赛季CBA联赛之青岛
日期:2016-05-30 13:41:3215-16赛季CBA联赛之同曦
日期:2016-06-23 16:41:052015年亚洲杯之巴林
日期:2015-02-03 15:05:04CU大牛徽章
日期:2013-09-18 15:24:52CU十二周年纪念徽章
日期:2013-10-24 15:46:53
2 [报告]
发表于 2013-09-06 13:10 |只看该作者
看上去应该是没什么用的啊

论坛徽章:
5
2015年迎新春徽章
日期:2015-03-04 09:58:1115-16赛季CBA联赛之上海
日期:2016-01-18 13:24:3015-16赛季CBA联赛之佛山
日期:2016-01-27 10:13:0515-16赛季CBA联赛之北控
日期:2016-08-04 22:33:2115-16赛季CBA联赛之山西
日期:2016-08-06 15:49:33
3 [报告]
发表于 2013-09-06 13:24 |只看该作者
应该是木有用

论坛徽章:
0
4 [报告]
发表于 2013-09-06 13:37 |只看该作者
晕,到底有没有用?我在网上查不到这种用法。

论坛徽章:
4
双子座
日期:2014-08-28 10:08:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯之阿联酋
日期:2015-03-13 03:25:15
5 [报告]
发表于 2013-09-06 13:46 |只看该作者
这个不是为了取消 前面的定义吗?
#define A

#undef A

论坛徽章:
4
双子座
日期:2014-08-28 10:08:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:112015年亚洲杯之阿联酋
日期:2015-03-13 03:25:15
6 [报告]
发表于 2013-09-06 13:47 |只看该作者
哦  没看仔细 。。。 sorry

论坛徽章:
0
7 [报告]
发表于 2013-09-06 13:47 |只看该作者
我说了后面什么都没有,就一个

#undef

什么意思,起什么作用。

论坛徽章:
7
巳蛇
日期:2014-04-10 08:54:57白羊座
日期:2014-04-22 20:06:262015年亚洲杯之沙特阿拉伯
日期:2015-02-10 14:18:532015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之吉达阿赫利
日期:2015-06-02 11:34:112015亚冠之武里南联
日期:2015-06-24 12:13:082015亚冠之阿尔纳斯尔
日期:2015-08-03 09:08:25
8 [报告]
发表于 2013-09-06 15:49 |只看该作者
本帖最后由 Monox 于 2013-09-06 15:53 编辑

回复 1# rong_bo


    你确定你看到的代码有只有#undef独占一行还能编译成功的?error: no macro name given in #undef directive
#undef
       ^
这是我这边测试的结果,#undef后面不加宏名是会报错的,C11 6.10 节有关于 #undef的语法,它是如下形式:
# undef identifier new-line,也就是说C标准规定#undef后必须跟一个标识符然后最后必须以换行符结束。

当然如果你看到的代码里那行#undef被条件编译指令括起来了,而你编译的时候正好那个条件不满足的话那么那个空的#undef也不会报错,不过这是另一回事了。

论坛徽章:
0
9 [报告]
发表于 2013-09-22 17:07 |只看该作者
我使用的是VS 2012,编译有警告,但可以编译。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP