C++ スタイルのコメントはデフォルトで GCC 4.3.3 でどのように処理されますか?
質問
Ubuntu 9.04 64 ビットで GCC 4.3.3 を使用していますが、C コードで C++ スタイルのコメントを使用するとエラーが発生していました。タイトルで「デフォルトで」と言っているのは、単に呼び出すことを意味します。 gcc test.c
GCC 4.3.3 ドキュメントによると (ここ)、これはサポートされています...それでも、とにかくエラーが発生しました。
これらのエラーは、コンパイル文字列に -std=c99 を追加するだけで消えたので、問題は解決しました。これについてはドキュメントと明らかに矛盾しているように思われるため、GCC の専門家がこれについて説明しているかどうか興味があります。
#include <stdio.h>
// this is a comment
int main( void )
{
return 0;
}
解決
defualtのGCCによっては、GCCの拡張子を持つC89 / 90標準を使用しています。このようなメッセージが標準で必要とされている場合、デフォルトでは、それは状況で任意の診断メッセージを発行しませんので、厳密に、それは特定の規格に準拠していないデフォルトで話します。あなたはそれが標準に固執させるために-ansi -pedantic
モード(おそらくも-Wall
)でのgccを実行する必要があります。そして、この場合には、あなたが、もう一度、C89 / 90を持っています。
他のヒント
Ubuntu がデフォルトをオーバーライドしている可能性があります。 これは gnu89 である必要があります. 。確かに、私の GCC 4.3 (Debian 上) ではそれがわかりません。
% echo '// foo' | gcc-4.3 -x c -c -
% echo '// foo' | gcc-4.3 -std=gnu89 -x c -c -
% echo '// foo' | gcc-4.3 -std=c89 -x c -c -
<stdin>:1: error: expected identifier or '(' before '/' token
所属していません StackOverflow