c99和gcc都支援,但是細節存在區別
在__va_args__位置填入…中的內容
功能與上述一模一樣,在args中填充…的內容,可讀性更強,更簡潔
這個##操作符用於消除 … 為空時 __va_args__前面的那個逗號- 例如:debug(「myerr」),第一種巨集替換後成為fprintf(stderr,」myerr」, ) 這裡就多出個逗號。
以下均為示範用例
將巨集函式中的instr前後加上引號,變成」instr」後替換 函式中的 #instr (#就是加引號後替換)-例如:
#define func(var) #var
int main()
輸出結果為 「helloworld」;
以字串形式連線x到user後面,使用示例:
#include
#define paster(n) printf("token"
#n"=%d\n",token##n)//#用法如上
int main()
注意順序,這裡會將x轉換為單引號字元 比如tochar(abc) 展開成 『abc』
一行表示不完整時,\表示連線到下一行開頭
ansi c中的幾個標準巨集定義
#ifdef __cplusplus
extern
"c"
#endif
define巨集的用法
再舉乙個使用無引數巨集替代字串的例子 define m y y 3 y include int main define m y y 3 y 定義m表示式 y y 3 y 在編寫源程式時,所有的 y y 3 y 都可由m代替,而對源程式作編譯時,將先由預處理程式進行巨集代換,即用 y y 3 y 表示...
define巨集的高階用法
參考 普通巨集定義 define pi 3.14 編譯階段替換掉巨集 define t1 3 4 容易產生歧義 define t2 3 4 新增括號後,語義清楚 float r 1.0 float area pi r r int a 2 t1 巨集替換後變成 int a 2 3 4 不符合本意 in...
c 巨集定義用法 define
巨集定義語法 define name stuff define pi 3.14 定義乙個m,值為3.14 define do forever for 定義乙個死迴圈 define reg register 定義reg來作為register的別名 define case break case 在swi...