c/c++中 ##和#的用法(井号的用法)
来源:互联网 发布:linux date格式化输出 编辑:程序博客网 时间:2024/05/29 18:25
在宏定义中经常会用到#和##
单井号(#)
把传递过来的参数当成字符串进行替代
如下示例:
程序代码
#define display(name) printf(""#name"")int main() { display(name);}
输出:
name
双井号(##)
称为连接符
在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。具体的定义在参考编译原理。
假设程序中已经定义了这样一个带参数的宏:
程序代码
#define paster( n ) printf( "token" #n " = %d", token##n )//同时又定义了一个整形变量:int token9 = 9;
现在在主程序中以下面的方式调用这个宏:
paster( 9 );
那么在编译时,上面的这句话被扩展为:
printf( "token" "9" " = %d", token9 );
注意到在这个例子中,paster(9);中的这个”9”被原封不动的当成了一个字符串,与”token”连接在了一起,从而成为了token9。而#n也被”9”所替代。
可想而知,上面程序运行的结果就是在屏幕上打印出token9=9
- c/c++中 ##和#的用法(井号的用法)
- [c、c++]宏中"#"和"##"的用法
- [c、c++]宏中"#"和"##"的用法
- c中 ## 的用法
- C++ :和 :: 的用法
- c/c++ 宏中"#"和"##"的用法
- C语言中##和#的用法
- [转]C宏中"#"和"##"的用法
- C语言宏中"#"和"##"的用法
- C语言宏中"#"和"##"的用法
- c/c++ 宏中"#"和"##"的用法
- c/c++ 宏中"#"和"##"的用法
- C和C++中include的用法
- C语言:宏中"#"和"##"的用法
- c/c++ 宏中"#"和"##"的用法
- C语言中#和##的用法
- c/c++ 宏中"#"和"##"的用法
- C语言中##和#的用法
- 数据归档方案提高数据库性能增强法规遵从
- 五角星五个角在坐标系上面的坐标计算[图]
- io流
- 对密码加密
- 用两个栈实现一个队列的功能&&用两个队列实现一个栈的功能
- c/c++中 ##和#的用法(井号的用法)
- 第5章——循环和关系表达式
- 数据归档能够大规模降低成本提高数据安全性
- 苹果嘲笑摩托罗拉:手机连拍间隔够喝咖啡了
- 如何提高企业数据归档解决方案的效率
- 关于Android中的BaseAdapter
- threaded-code技术
- PID算法大总结(经整理)
- 三谈Iframe自适应高度(http://ued.koubei.com/?p=1217)