【1】變長參數的宏定義以及__VA_ARGS__
在C99標准中,我們就已經可以使用變長參數的宏定義。
變長參數的宏定義是個神馬?就是在宏定義的參數列表中最后一個參數為省略號。
而現在C++ 11中,使用預定義宏__VA_ARGS__可以在宏定義的實現部分替換省略號所代表的字符串。
原書示例:
#include <stdio.h> #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); }
定義LOG宏來記錄代碼位置中一些信息,程序員可以根據stderr產生的日志追索到代碼中產生這些記錄的位置。
引入這樣的特性,對於輕量級調試,簡單的錯誤輸出都是有積極意義的。
good good study, day day up.
順序 選擇 循環 總結
