C語言巨集定義時 井號 和 雙井號 的用法

2021-06-29 06:07:13 字數 666 閱讀 2119

#在英語裡面叫做 pound

在c語言的巨集定義中,乙個#表示字串化;兩個#代表concatenate

在巨集定義中,#

的功能是將其後面的巨集引數進行字串化操作(stringfication),即無論後面的巨集變數是字串還是常量,都當成字元來處理。

而## 被稱為連線符(concatenator),用來將兩個token連線為乙個token。

注意這裡連線的物件是token就行,而不一定是巨集的變數。

舉例如下:

[cpp]view plain

copy

#include 

void

quit_command()     

void

help_command()     

struct

command  

;    

#define command(name) 

#define print(name) printf("token"#name"=%d\n", token##name)

main();    

commands[0].function();  

}  

得到的結果是:

token9=9

i am quit command

C語言巨集定義時 井號 和 雙井號 作用

的功能是將其後面的巨集引數進行字串化操作 stringfication 簡單說就是在對它所引用的 巨集變數通過替換後在其左右各加上乙個雙引號。define example instr printf the input string is t s n instr define example1 ins...

C語言巨集定義時 井號 和 雙井號 的用法

c語言中如何使用巨集c 和c 中的巨集 macro 屬於編譯器預處理的範疇,屬於編譯期概念 而非執行期概念 下面對常遇到的巨集的使用問題做了簡單總結。在c語言的巨集中,的功能是將其後面的巨集引數進行字串化操作 stringfication 簡單說就是在對它所引用的巨集變數通過替換後在其左右各加上乙個...

C語言巨集定義時 井號 和 雙井號 的用法

c語言中如何使用巨集c 和c 中的巨集 macro 屬於編譯器預處理的範疇,屬於編譯期概念 而非執行期概念 下面對常遇到的巨集的使用問題做了簡單總結。在c語言的巨集中,的功能是將其後面的巨集引數進行字串化操作 stringfication 簡單說就是在對它所引用的巨集變數通過替換後在其左右各加上乙個...