У меня есть проект C ++ Xcode 3, сгенерированный из сценариев CMake. Он использует некоторые заголовки с открытым исходным кодом, которые всегда работали раньше, но в этом проекте я получаю ошибку компиляции Extra ';'
когда в конце скобки есть лишняя точка с запятой:
if(...)
{
...
};
Есть ли какая-либо опция компилятора, которая делает завершающие точки с запятой ошибкой, которую я могу отключить?
Вот один из оскорбительных файлов, см. Строку 259: http://zziplib.svn.sourceforge.net/viewvc/zziplib/trunk/zzip-0/zzip/zzip.h?revision=523&Вид = разметки
Предупреждение о точке с запятой предоставлено -pedantic
(или же -pedantic-errors
) вариант; Я не думаю, что вы можете отключить его отдельно.
Я бы рекомендовал удалить точку с запятой, а не предупреждение.
Дополнительная точка с запятой в примере кода, который вы нам показали:
if(...)
{
...
};
совершенно законно; это пустое утверждение.
Ошибка, которую вы получаете, на самом деле о лишней точке с запятой на extern "C"
, Следующее появляется в трех исходных файлах в zziplib
библиотека:
#ifdef __cplusplus
extern "C" {
#endif
...
#ifdef __cplusplus
};
#endif
На самом деле это синтаксическая ошибка. Некоторые компиляторы могут не жаловаться на это, или могут выдавать только предупреждение, но с g++ -pedantic-errors
это фатальная ошибка
Я сообщил об этой проблеме сопровождающему zziplib
и я только что получил ответ:
Thanks for pointing to the problem, fixed in r524 now. I will
probably roll a public release next month (still need to check
the win32 version).
best regards, Guido Draheim
ChangeLog:
2012-09-15 guidod <[email protected]>
* zzip.h, plugin.h: "};" at end of extern-C produces build errors with
the default --pedantic-errors on newer CMake. Thanks to Keith Thompson
recognizing it - see http://stackoverflow.com/questions/12384280/