#define debug(format, ...) fprintf(stderr, format, ##__VA_ARGS__)debug
... 指可變參數。這類宏在被調用時,它(這裏指‘…')被表示成零個或多個符號,包括裏面的逗號,一直到到右括弧結束爲止。當被調用時,在宏體(macro body)中,那些符號序列集合將代替裏面的__VA_ARGS__標識符。當零個參數時,##會把前面多餘的逗號去掉。code
eg:orm
int main() { debug("a = %d", 10); //擴展爲fprintf(stderr, "a = %d", 10); debug("good"); //擴展爲fprintf(stderr, "good"); return 0; }
__FILE__ 表明當前文件名form
__LINE__ 當前行class