c語言的巨集
阿新 • • 發佈:2018-11-19
今天想在巨集名中使用巨集,如#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