前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识 | 每日一面(63)

基础知识 | 每日一面(63)

作者头像
小林C语言
发布2020-04-02 17:25:20
1940
发布2020-04-02 17:25:20
举报

古代的剑客们与

对手相逢时,无

论对手多么强大,

明知不敌,也要亮出自己的剑!

读者:如何列出所有的预定义标识符?

小林:尽管这是种常见的需求, 但却没有什么标准的办法。gcc 提供了和 -E 一起使用的 -dM 选项, 其它编译器也有类似的选项。如果编译器文档没有帮助, 那么可以使用类似 Unix 字符串工具的程序取出编译和预处理生成的可执行文件中的可打印字符串。请注意, 很多传统的系统相关的预定义标识符并不标准, 因而会被删除或改名。

读者:我有些旧代码, 试图用这样的宏来构造标识符 #define Paste(a,b) a/**/b 但是现在不行了。

小林:这是有些早期预处理器实现的未公开的功能, 注释完全消失, 因而可以用来粘结标识符。但 ANSI 确认注释用空白代替。然而对粘结标识符的需求却十分自然和广泛, 因此 ANSI 引入了一个明确定义的标识符粘结操作符 —— ##, 它可以象这样使用#define Paste(a, b) a##b

有时候,正是那些意想不到之人,成就了无人能成之事。

——图灵

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档