可变参数宏

#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__ 当前行

你可能感兴趣的:(可变参数宏)