C 之 把字串作為巨集引數

2021-06-18 05:10:47 字數 572 閱讀 7016

#define printstring(arg) cout<<#arg

在巨集表示式中,字元#放在引數arg的前面,表示在進行轉換時,引數放在雙引號中。

如:printstring(hello);

預處理器就會把它轉換為:cout<<」hello」;

邏輯#if指令:

邏輯#if指令的使用方式有兩種。第一,可以測試某個符號以前是否用#define指令定義過。第二,可以測試某個常量表示式是否為真。

要測試某個識別符號是否存在(在以前的#define指令中定義),可以使用如下所示的指令:

#if defined 識別符號

如果指定的識別符號已定義,#if後面的語句組就包含在要編譯的原始檔中。這個語句組用如下指令結束:#endif

如果識別符號還未定義,就跳過#if和#endif之間的語句,它們也不是程式的一部分。

防止**重複:

也可以測試識別符號是否不存在。這個指令的一般形式如下所示:

#if !define 識別符號

如果識別符號以前沒有定義,就把#if和#endif之間的語句包含在要編譯的原始檔中,其縮寫方式如下:#ifndef 識別符號

C語言巨集引數的字串化和巨集引數的連線

在巨集定義中,有時還會用到 和 兩個符號,它們能夠對巨集引數進行操作。用來將巨集引數轉換為字串,也就是在巨集引數的開頭和末尾新增引號。例如有如下巨集定義 define str s s那麼 printf s str c.biancheng.net printf s str c.biancheng.ne...

C 字串 引數

1 console.writeline hello 1 輸出的是hello1 console.writeline 1 hello 輸出的是1hello console.writeline 1 2 3 hello 3 2 1 輸出的是6hello321 2 用 定義字串,就可以直接在裡面插入變數 in...

c 語言中巨集引數的字串化跟巨集引數的連線

c語言中的巨集有無引數的巨集,也有帶引數的巨集。其實巨集就相當與乙個字串模板,然後預處理器在有巨集的標誌處,把巨集展開,說明白點,也就是字串的替換工作。不過這個工作發生在編譯之前,以前一直不理解,感覺c語言中的巨集有多高大上,原來只是對你的c 進行一些字串的替換工作,替換後,還是c語言,然後才開始編...