2009-06-16 11 views
8

私はC++コードをコンパイルしており、-pedanticオプションを有効にしたいと思います。
Mac OS X LeopardでXcodeを実行しているGCC 4.0を使用しています。
たとえば、-pedantic(-Wno-variadic-macrosおよび-Wno-long-long)を使用すると、通常はバリデーションマクロと、long longタイプを許可することができます。 しかし、私は "列挙子リストの末尾にカンマを無効にする何かを見つけることができませんでした"警告。
可能ですか?GCC:-pedanticを使用しているときに、「列挙子リストの最後のカンマ」警告を無効にすることはできますか?

ありがとうございました。

答えて

4

列挙子の末尾にカンマがC99で有効ではなく、C89であるので、以下はあなたのコードを提供する動作しますが、有効なC99

gcc -std=c99 -pedantic foo.c 

である私はそれがCに有効ではないことをかなり確信している++全て

編集時(G ++による):HP-UX上でGCC 4.2.1でこれをテストし、それはそれがC++にエラー/警告が foo.cの

+1

実際、 "-std = c89"を使用すると警告が表示されます。 "-std = 99"が使用されている場合、警告は表示されません。しかし、foo.cをfoo.cppにするとエラーになります。それは私の問題です... – Guillaume

+2

もしそれが.cファイルなら、GCCはCコンパイラを使います。 .ccまたは.cppファイルの場合、GCCはC++コンパイラを使用します。あなたのコードは合法的なC++ではないので、エラーです。 – Glen

2
int main(int argc, char** argv) { 
    enum { A, B, }; 
    return 0; 
} 


gcc -std=c99 -pedantic foo.c 

作品それを無効にすることはまだできません。たとえそれがC++ 11では有効ですが。 今後GCCが修正されると、-std = C++ 11はそれを無効にする必要があります。

-std = c99はCではなく、C++で動作します(質問のように)。

+0

これは今修正されているようです:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51888 – StellarVortex

関連する問題