Я пытаюсь написать макрос, чтобы упростить использование LOG4CPLUS. Но у меня возникли проблемы при написании макроса.
Это что-то в моем файле cpp:
Logger logger = Logger::getInstance("ManagerServer");
После этого я могу записать одну строку следующим образом:
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 ++ дай мне это сообщение:
ошибка: ожидаемое первичное выражение до маркера ')'
Кто-нибудь может мне помочь? Я действительно ценю это.