gcc 的宏替换 __stringify

来源:互联网 发布:第三范式分解算法 编辑:程序博客网 时间:2024/06/06 20:06

 

  每次看到类似如下的代码,总是不解,为什么要分两级定义呢,分明可以直接将__stringify定义为 #x嘛。但大家都这么做,理论上是不会有问题的啊。今天忍不住搜了下,看来还是我没往深入地想啊,唉,鄙视自己!

 

 #define __stringify_1(x...) #x
 #define __stringify(x...) __stringify_1(x)

 

 

 假设:直接 #define __stringify(x) #x

 

  且 #define AA bb

  那么 __stringify(AA) 展开为 "AA"

 

  而像最上面的定义方法,__stringify(AA) 将展开为 "bb"

 

 

  不过,最后我还想问一句,gcc支持嵌套多少层宏定义,无限?

 

 

 

  参考:http://hi.baidu.com/%B1%B1%B7%E7%B1%B1%B5%C4%D6%ED/blog/item/a2d8e031942aa20591ef39ae.html