我有一个从CMake脚本生成的C ++ Xcode 3项目。它使用了一些以前一直工作的开源头文件,但在这个项目中,当尾部括号有一个不必要的分号时,我得到一个编译错误Extra ';'
:
if(...)
{
...
};
是否有一些编译器选项会使尾随的分号失误,我可以将其关闭?
以下是其中一个违规文件,请参阅第259行:http://zziplib.svn.sourceforge.net/viewvc/zziplib/trunk/zzip-0/zzip/zzip.h?revision=523&view=markup
答案 0 :(得分:4)
分号警告来自-pedantic
(或-pedantic-errors
)选项;我不认为你可以单独禁用它。
我建议删除分号而不是警告。
答案 1 :(得分:2)
您向我们展示的示例代码中的额外分号:
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 <guidod@gmx.de>
* 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/