#(井号)在C/C++的#define宏定义中的特殊用法
2012-03-20 15:27
741 查看
#(井号)在C/C++的#define宏定义中的特殊用法
2011年10月18日 星期二 11:17 A.M.
2011年10月18日 星期二 11:17 A.M.
工作需要,被迫看了一段老外编写的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_5d2858b50100sqji.html |
相关文章推荐
- #(井号),##(双井号), #@在C/C++的#define宏定义中的特殊用法
- #(井号),##(双井号), #@在C/C++的#define宏定义中的特殊用法
- C++#define的用法(含特殊)
- c++中 宏定义(#define)的用法
- C语言的井号(#)特殊用法(#define)
- 宏定义#define的用法
- C++之struct也可以当做class来用!特殊用法之赋值
- C++中特殊的宏定义
- c/c++中 ##和#的用法(井号的用法)
- [自考]C++中一些特殊用法
- 【c++技巧】do...while(0)在宏定义中的巧妙用法
- C++ #define用法总结
- C语言的一些特殊用法(#define)
- C语言宏定义时#(井号)和##(双井号)的用法
- C/C++中宏定义(#define)
- c++用宏定义来编写函数#define
- C++ 宏定义#define 中##的使用
- C语言的一些特殊用法(#define)
- C/C++编译预处理:宏定义指令、文件包含指令、条件编译指令和特殊符号处理
- 宏定义#define,Typedef的区别和用法