Счетчик аргументов для макросов в MSVC

Я использую этот простой макрос для регистрации событий моей программы:

#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);\
}

Он успешно компилируется в Linux и Windows, используя GCC и MinGW. Хотя MSVC 11 не компилируется.

Заметка: Я испытываю трудности с пониманием этот а также этот ответы на предыдущие вопросы SO. Я думаю, что я что-то упускаю из-за макросов и / или количества переменных аргументов Так:

  1. Что такое __VA_ARGS__? Должен ли я использовать это?
  2. Должен ли я использовать это только для MSVC-компилируемого кода?
  3. Выше код неправильный / нестандартный / неэлегантный из-за отсутствия тех __VA_ARGS__ штат сотрудников?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]