1

我有一个从 CMake 脚本生成的 C++ Xcode 3 项目。它使用了一些以前一直有效的开源头文件,但是在这个项目中,Extra ';'当尾括号有一个不必要的分号时,我得到一个编译错误:

if(...)
{
...
};

是否有一些编译器选项使尾随分号成为错误,我可以将其关闭?

这是一个有问题的文件,见第 259 行:http: //zziplib.svn.sourceforge.net/viewvc/zziplib/trunk/zzip-0/zzip/zzip.h ?revision=523&view=markup

4

2 回答 2

5

分号警告来自-pedantic(or -pedantic-errors) 选项;我认为您不能单独禁用它。

我建议删除分号而不是警告。

于 2012-09-12T08:45:37.643 回答
3

您向我们展示的示例代码中的额外分号:

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/
于 2012-09-15T09:47:28.167 回答