C中变长宏使用
C中变长宏可用来调试等各种扩展,方便编码使用,以下总结其使用方法
变长宏的实现分两种:GCC和C99标准
GCC
主要在声明中使用 varname…* , 后边使用 ##varname* 代替
两个实例如下所示:
#define LOG_ERROR(fmt, arg...) printf("\033[31m[ ERROR ] " fmt "\033[0m", ##arg);
#define LOG_ERROR(fmt, args...) printf("\033[31m[ ERROR ] " fmt "\033[0m", ##args);
C99
主要在声明中使用…,后边使用_VA_ARGS_代替
但是会出现…为空的情况,此时会出现错误,可以用##_VA_ARGS_代替解决
两个实例如下所示:
#define LOG_ERROR(fmt, ...) printf("\033[31m[ ERROR ] " fmt "\033[0m" __VA_ARGS__);
#define LOG_ERROR(fmt, ...) printf("\033[31m[ ERROR ] " fmt "\033[0m", ##__VA_ARGS__);