需求
在 Linux 平台下运行程序时,需要通过 syslog 打印日志,syslog 本身是可变参数的函数,所以需要一个可变参数的宏来定义在 linux 平台下的函数。
解决
- 在
C++
中,可变参数宏的写法是:#define debug(format, ...) fprintf (stderr, format, ## __VA_ARGS__)
, 满足需求的代码如下:#ifdef Q_OS_LINUX #define LOG(priority, format, ...) syslog(priority, format, ## __VA_ARGS__) #else #define LOG(priority, format, ...) #endif
- 在
C
中,写法是:#define debug(format, ...) fprintf(stderr, fmt, __VA_ARGS__)
- 在
GCC
中,写法是:#define debug(format, args...) fprintf (stderr, format, args)