C++ スタイルのコメントはデフォルトで GCC 4.3.3 でどのように処理されますか?

StackOverflow https://stackoverflow.com/questions/1657643

  •  11-09-2019
  •  | 
  •  

質問

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

の<のhref = "HTTPからの引用:// gcc.gnu.org/onlinedocs/gcc/Standards.html#Standards」のrel = "nofollowをさnoreferrer"> http://gcc.gnu.org/onlinedocs/gcc/Standards.html#Standards の

  

デフォルトなしC言語の方言であれば   オプションが指定されている、ある-std = gnu89

そして// comments-std=gnu89によって認識されている。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top