可变参数宏

#define    log(fmt, ...)    printf(fmt, ##__VA_ARGS__)

__VA_ARGS__表示其余参数,加##是为了没有多余参数时去掉第一个参数fmt后面的逗号,如:

log(“log ”);

没有加##就会扩展为:printf("log ", );编译会报错

而加了##就会拓展成:printf("log ");编译正常

原文地址:https://www.cnblogs.com/lgslearn/p/15544772.html