我正在使用这个简单的宏来记录我的程序的事件:
#define _ERROR(format, args...) \
{ \
time_t t = time(0);\
struct tm * now = localtime( & t );\
fprintf(stderr, "[ERROR %d-%d-%d %d:%d:%d]: ",now->tm_year + 1900,\
now->tm_mon + 1, now->tm_mday,\
now->tm_hour, now->tm_min, now->tm_sec); \
fprintf(stderr, format , ## args);\
printf("\n");\
fflush(stderr);\
}
它使用GCC和MinGW在Linux和Windows上快乐地编译。虽然MSVC 11无法编译。
注意:我在以前的SO问题上理解this和this答案时遇到了困难。我想我遗漏了一些关于宏和/或可变参数计数的东西。所以:
__VA_ARGS__
?我必须使用它吗? __VA_ARGS__
员工?