#define debug(format, ...) fprintf(stderr, format, ##__VA_ARGS__)
... 指可变参数。这类宏在被调用时,它(这里指‘…')被表示成零个或多个符号,包括里面的逗号,一直到到右括弧结束为止。当被调用时,在宏体(macro body)中,那些符号序列集合将代替里面的__VA_ARGS__标识符。当零个参数时,##会把前面多余的逗号去掉。
eg:
int main(){ debug("a = %d", 10); //扩展为fprintf(stderr, "a = %d", 10); debug("good"); //扩展为fprintf(stderr, "good"); return 0;}
__FILE__ 代表当前文件名
__LINE__ 当前行