IT旅途——程序员面试经验分享
2014-03-08 11:55
246 查看
“#”也是预处理?可以这样认为。那么怎么用它呢?看看下面的例子。
假如你确实希望在字符串中包含宏参数,那我们就可以使用“#”,他可以把语言符号转化为字符串。
和”#“运算符一样,”##“运算符可以用于函数宏的替换部分。这个符号可以把两个语言符号组合成单个语言符号。
注意:在单一的宏定义中,最多可以出现一次”#“或”##“预处理器操作符。
与”#“或”##“预处理器操作符相关的计算次序,如果未被指定则会产生问题。为了规避这个问题,在单一的宏定义中只能使用其中一种操作符。
除非必须,尽量不要使用”#“和”##“。
[b] 以上就是本人在学习过程中的一些经验总结。当然,本人能力有限,难免会有纰漏,希望大家可以指正。[/b]
本文出自 “做一个小小小司机” 博客,请务必保留此出处http://10799170.blog.51cto.com/10789170/1719002
#define SQR(X) printf("the square of x is %d.\n",((x)*(x))如果这样使用宏:SQR(8);的结果呢?
the square of x is 64.注意到,引号中的字符x被当作普通文本处理了,而不是当作一个可以被替换的语言符号。
假如你确实希望在字符串中包含宏参数,那我们就可以使用“#”,他可以把语言符号转化为字符串。
#define SQR(X) printf("the square of "#x" is %d.\n",((x)*(x))再使用:SQR(8);结果就会变成
the square of 8 is 64.相信你已经学会了#运算符的使用,那么##预算符该怎么使用?
和”#“运算符一样,”##“运算符可以用于函数宏的替换部分。这个符号可以把两个语言符号组合成单个语言符号。
#define XNAME(n) x##n如果这样使用宏:XNAME(8) 则在预处理的时候展开成:x8
注意:在单一的宏定义中,最多可以出现一次”#“或”##“预处理器操作符。
与”#“或”##“预处理器操作符相关的计算次序,如果未被指定则会产生问题。为了规避这个问题,在单一的宏定义中只能使用其中一种操作符。
除非必须,尽量不要使用”#“和”##“。
[b] 以上就是本人在学习过程中的一些经验总结。当然,本人能力有限,难免会有纰漏,希望大家可以指正。[/b]
本文出自 “做一个小小小司机” 博客,请务必保留此出处http://10799170.blog.51cto.com/10789170/1719002
相关文章推荐
- IT旅途——程序员面试经验分享
- IT旅途——程序员面试经验分享
- IT旅途——程序员面试经验分享
- IT旅途——程序员面试经验分享
- 【转载】IT旅途——程序员面试经验分享
- IT旅途——程序员面试经验分享
- IT旅途——程序员面试经验分享
- IT旅途——程序员面试经验分享
- IT旅途——程序员面试经验分享
- IT旅途——程序员面试经验分享(作者季红)
- IT旅途——程序员面试经验分享
- IT旅途——程序员面试经验分享
- 传统IT转互联网面试经验分享
- IT专家经验教训分享:我犯过的九件大错
- 标 题: [心得]传统IT转互联网面试经验分享
- IT管理经验分享
- 企业IT解决方案经验分享活动
- 传统IT转互联网面试经验分享
- IT项目管理实践经验分享
- 经验分享:六大IT公司面试亲历精采回放