MSVC中宏的变量参数计数

时间:2013-07-24 09:52:25

标签: c++ visual-c++ variadic-macros

我正在使用这个简单的宏来记录我的程序的事件:

#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问题上理解thisthis答案时遇到了困难。我想我遗漏了一些关于宏和/或可变参数计数的东西。所以:

  1. 什么是__VA_ARGS__?我必须使用它吗?
  2. 我是否必须使用 来获取MSVC编译代码?
  3. 上面的代码是错误的/非标准的/不优雅的,因为缺少那些__VA_ARGS__员工?

0 个答案:

没有答案
相关问题