LOG4CPLUS の使用を簡素化するマクロを作成しようとしています。しかし、マクロを書くときに問題が発生しました。
これは私のcppファイルにあるものです:
Logger logger = Logger::getInstance("ManagerServer");
その後、次のような 1 行をログに記録できます。
LOG4CPLUS_ERROR(logger, logEvent);
logEvent を変数引数に変更できるよりも、マクロを書きたいだけです。そして、このように使用します:
LogErr("failed");
LogErr("failed times %d", iTimes);
だから、私はこのように書きます:
#define LogErr(fmt, args...)\
do {\
char szBuf[MAX_LOG_BUFFER_SIZE];\
memset(szBuf, 0, MAX_LOG_BUFFER_SIZE); \
vsnprintf(szBuf, MAX_LOG_BUFFER_SIZE, fmt, ##args); \
LOG4CPLUS_ERROR(logger, szBuf);\
} while(0)
しかし、私がコンパイルするとき。g++ で次のメッセージが表示されます。
エラー: ')' トークンの前にプライマリ式が必要です
誰でも私を助けることができますか?ほんとうにありがとう。