首页 > 其他 > 详细

两级宏&&字符串化宏

时间:2014-09-29 23:09:32      阅读:413      评论:0      收藏:0      [点我收藏+]

如果你想字符串化宏参数扩展的结果,你必须使用两个级别的宏。

1 #define xstr(s) str(s)
2 #define str(s) #s
3 #define foo 4
4 str (foo)
5      ==> "foo"
6 xstr (foo)
7      ==> xstr (4)
8      ==> str (4)
9      ==> "4"

当s被用在str中,s被字符串化,所以首先它不是宏扩展。

但s是xstr的一个普通参数,所以在xstr完全宏扩展之前s本身已经展开。

STR到达它的参数的时候,它已经是宏扩展。就是xstr处理自身参数foo的时候,foo已经展开。

解决方案出处

https://gcc.gnu.org/

两级宏&&字符串化宏

原文:http://www.cnblogs.com/liangliangdetianxia/p/4001054.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!