今天想在巨集名中使用巨集,如#define macroname##postfix,但是發現不行,好像c語言的巨集沒法弄出這種效果吧。暫時放一下,不琢磨了。
c語言預處理命令詳解
c語言巨集
使用這麼乙個規則,可以建立乙個很有趣的技術:列印出乙個巨集被展開後的樣子,這樣可以
方便你分析**:
#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語言常用巨集定義
c語言巨集的高階應用
C語言的巨集
巨集是c語言中乙個很重要的特性,預處理器會在預處理中對巨集進行替換。但是巨集的語法又有許多的坑,所以這篇部落格來記錄一下,參考書目 c primer plus 在c語言中 可以告訴預處理器,這是它需要處理的地方。預處理器會對 中巨集出現的地方用替換體進行替換,有時候可以用巨集來提高 執行速度 和內聯...
C語言巨集技巧 X巨集
本文介紹下x巨集的使用 首先簡單介紹下巨集的幾種用法 define strcat x,y x y define str x x define str x x define log x y 拼接xy x 單引號包裹 x x 字串化,雙引號包裹 x va args 會擴充套件引數.ansi c標準中有幾...
C語言中的巨集
c語言中如何使用巨集c 和c 中的巨集 macro 屬於編譯器預處理的範疇,屬於編譯期概念 而非執行期概念 下面對常遇到的巨集的使用問題做了簡單總結。在c語言的巨集中,的功能是將其後面的巨集引數進行字串化操作 stringfication 簡單說就是在對它所引用的巨集變數通過替換後在其左右各加上乙個...