分类: C/C++
2011-04-16 17:35:27
I. 是不定變數的使用:
#ifdef DEBUG
#define debug_printf(str, ...) do { printf(str, __VA_ARGS__); } while (0)
#else
#define debug_printf(str, ...)
#endif
關鍵是 __VA_ARGS__
,這樣可以很愉快的使用 debug_printf()
。
II. 將傳入的參數變成字串:
#define print_var(var)
do {
printf("%s: %sn", #var, var);
} while (0)
關鍵字是 #var
。當輸入 print_var(argv[0]);
時就會把以上的 Macro 展開為 printf("%s: %s\n", "argv[0]", argv[0]);
。
III. 傳入的參數名稱變化
假設你想要把傳入參數名稱再變化,用 ##
穿插其中:
#define print_three_var(var)
do {
print_var(var);
print_var(var##2);
print_var(var##3);
} while (0)
因為你不能用 var2 來表示 var + "2",所以你必須用 ##
。當你傳入 print_three_var(telephone)
時,他會展開成:
print_var(telephone);
print_var(telephone2);
print_var(telephone3);
補充一下:這邊的 print_var()
是 II. 裡的 print_var()
。