0

プログラムのイベントをログに記録するために、この単純なマクロを使用しています。

#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__これらのスタッフが不足しているため、上記のコードは間違っている/非標準/エレガントではありませんか?
4

0 に答える 0