在C99標準中,我們就已經可以使用變長參數的宏定義。變長參數的宏定義是啥??就是在宏定義的參數列表的最後一個參數爲省略號。而現在C++ 11 中,可以使用預定義宏__VA_ARGS__可以在宏定義的實現部分替換省略號所代表的字符串。
EX:
#include <stdio.h>
//定義LOG宏來記錄代碼位置中一些信息,程序員可以根據stderr產生的日誌追索到代碼中產生
//這些記錄的位置。引入這樣的特性,對於輕量級調試,簡單的錯誤輸出都是有積極意義的
#define LOG(...) {\
fprintf(stderr,"%s:line %d:\t",__FILE__,__LINE__);\
fprintf(stderr,__VA_ARGS__);\
fprintf(stderr,"\n");\
}
int main()
{
int x = 3;
LOG("x = %d",x);
}