c语言的宏

今天想在宏名中使用宏,如#define macroname##postfix,但是发现不行,好像c语言的宏没法弄出这种效果吧。暂时放一下,不琢磨了。


c语言预处理命令详解

http://www.360doc.com/content/15/0114/22/9200790_440805135.shtml


c语言宏

https://wenku.baidu.com/view/efd65365783e0912a3162a04.html


使用这么一个规则,可以创建一个很有趣的技术:打印出一个宏被展开后的样子,这样可以

方便你分析代码:

 

   #define TO_STRING( x ) TO_STRING1( x ) 

   #define TO_STRING1( x ) #x 

   TO_STRING

首先会将x全部展开(如果x也是一个宏的话),然后再传给TO_STRING1转换为字符串,现在你可以这样:

   const char *str = TO_STRING( PARAM( ADDPARAM( 1 ) ) );

去一探PARAM展开后的样子

使用这么一个规则,可以创建一个很有趣的技术:打印出一个宏被展开后的样子,这样可以方便你分析代码: 
   #define TO_STRING( x ) TO_STRING1( x )    #define TO_STRING1( x ) #x 
   TO_STRING首先会将x全部展开(如果x也是一个宏的话),然后再传给TO_STRING1转换为字符串,现在你可以这样: 
   const char *str = TO_STRING( PARAM( ADDPARAM( 1 ) ) );去一探PARAM展开后的样子。

一个很重要的补充:就像我在第一点说的那样,如果一个像函数的宏在使用时没有出现括号,那么预处理器只是 
   将这个宏作为一般的符号处理(那就是不处理)


C语言常用宏定义

https://wenku.baidu.com/view/258f0463caaedd3383c4d30e.html?re=view


c语言宏的高级应用

https://wenku.baidu.com/view/c95888ce05087632311212f5.html

C语言宏嵌套

http://blog.163.com/m13591120447_1/blog/static/21637918920137811837285/


C语言宏高级用法 [总结]


http://www.cnblogs.com/Anker/p/3418792.html


猜你喜欢

转载自blog.csdn.net/thinktalk/article/details/74043594
今日推荐