打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
#(井号)在C/C 的#define宏定义中的特殊用法

#(井号)在C/C++的#define宏定义中的特殊用法

 工作需要,被迫看了一段老外编写的C++代码,开始被老外绕了一通,最后找到了原因.老外真是牲口,妈的啥技巧都用,查了一下书知道了几个#号在#define宏定义中的特殊用法,不过这东西好像在特殊情况下的确会有些用途,不防分享一下,我也是从网上抄来的,不好意思:   

    1.#:在宏展开的时候会将#后面的参数替换成字符串,如:

         #define p(exp) printf(#exp);

      调用p(asdfsadf)的时候会将#exp换成"asdfsadf"

    2.##:将前后两个的单词拼接在一起。例如《The C Programming Language》中的例子:

         #define cat(x,y) x##y

      调用cat(var, 123)展开后成为var123.

    3.#@:将值序列变为一个字符

         #define ch(c) #@c

      调用ch(a)展开后成为'a'.

   看看是不是很好玩,也许特殊情况下,用一次也很有趣.


@

来源:http://blog.sina.com.cn/s/blog_4b650d650100pufd.html

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C语言宏与单井号(#)和双井号(##)
#define assert_param(expr) ((void)0) 这是个宏定义,但是我真是不知道(void)0能执行什么操作 (百度问题)
C语言初学者编程规范—宏
#define宏定义中的#,##,@#,\ 这些符号的神奇用法
关于宏定义的格式
宏定义
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服