https://gcc.gnu.org/onlinedocs/cpp/Macros.html
本篇將快速介紹C語言巨集的用法,以及一些實用的技巧
巨集(Macro)最基本的用法,就是拿來定義常數,或是拿來定義一段程式碼區塊,其中 '\' 符號在巨集中表示換行,下面是一個例子
C語言前處理器的編譯是循序的,因此巨集必須先定義才會生效,以下是個例子
本篇將快速介紹C語言巨集的用法,以及一些實用的技巧
巨集(Macro)最基本的用法,就是拿來定義常數,或是拿來定義一段程式碼區塊,其中 '\' 符號在巨集中表示換行,下面是一個例子
#define BUFFER_SIZE 1024 #define NUMBERS 1, \ 2, \ 3 foo = (char *) malloc (BUFFER_SIZE); int x[] = { NUMBERS };你可以用以下指令來察看前處理器將巨集語法編譯後的結果,你會發現所謂的巨集就是拿來做語法上的字串替換
gcc -E -P XXX.c像上面這一段程式碼經過前處理器編譯後變成
foo = (char *) malloc (1024); int x[] = { 1, 2, 3 };以下將用註解呈現編譯後的結果
C語言前處理器的編譯是循序的,因此巨集必須先定義才會生效,以下是個例子
foo = X; #define X 4 bar = X; //前處理器編譯後變成 //foo = X; //bar = 4;實際上巨集定義是能包含其他巨集名稱的,例如
#define TABLESIZE BUFSIZE #define BUFSIZE 1024 //此時TABLESIZE變成1024另一個有趣的例子,先定義BUFSIZE後,再重新定義BUFSIZE,結果很有趣
#define BUFSIZE 1020 #define TABLESIZE BUFSIZE #undef BUFSIZE #define BUFSIZE 37 //此時TABLESIZE為37, //不管何時使用TABLESIZE,TABLESIZE都會是37不會是1020
沒有留言:
張貼留言