Я портирую проект c ++ на windows в windows, и я столкнулся со следующей ошибкой.
UeiDaqAnsiC.cpp:105:24
error: expected ')' before string constant
UEI_ERROR(__FUNCTION__ " error: %s\n", e.getErrorMessage());
Похоже, что linux не может объединить макрос __FUNCTION__
со следующей строкой. Это сбивает с толку, так как проект компилируется и собирается просто отлично в Windows.
В качестве быстрого исправления, кажется, просто добавление ,
между __FUNCTION__
и "error: %s\n", e.getErrorMessage()
полностью исправляет его.
Новая фиксированная линия выглядит следующим образом UEI_ERROR(__FUNCTION__, " error: %s\n", e.getErrorMessage());
Я пришел сюда, потому что я не очень хорошо разбираюсь в компиляторе linux g ++, и я хочу знать, является ли это допустимым обходным путем для этой ошибки, прежде чем я исправлю все 130 строк, где эта ошибка возникает.
РЕДАКТИРОВАТЬ: Я также хочу спросить, сохраняет ли запятая функциональность простого объединения макроса и строки
EDIT2: UEI_ERROR
определяется как #define UEI_ERROR(...) UeiPalTraceOutputWithLevel(UeiPalTraceError, __VA_ARGS__)