1

CMake スクリプトから生成された C++ Xcode 3 プロジェクトがあります。以前は常に機能していたいくつかのオープンソース ヘッダーを使用していますが、このプロジェクトでは、Extra ';'末尾の角かっこに不要なセミコロンがあるとコンパイル エラーが発生します。

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

末尾のセミコロンをエラーにするコンパイラ オプションはありますか?

問題のあるファイルの 1 つを次に示します。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以下は、ライブラリ内の 3 つのソース ファイルに表示されます。

#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 に答える