1

「C99はどのくらい普遍的にサポートされていますか?」という投稿を興味深く読みました。その中のコメントの 1 つは、Microsoft が C99 をサポートしていないことを指摘しています。ただし、コメント記号 // は VS 2008 で機能し、この記号は C99 にあります。2 つの質問があります。

  1. VS 2008 は C99 をどの程度サポートしていますか?

  2. 同じコードで C89 と C99 の構文を混在させても問題ありませんか? したがって、C89 でコードを記述し、コメント //. これは、混合コーディングを行っていることを意味します。では、そのような場合、コンパイラは何をしますか? 最初に c89 でコードをチェックし、次に C99 でコードをチェックして、コメントに // を使用していることを受け入れますか?

4

1 に答える 1

4

MSVC は、C モードで C99 をほとんどサポートしていません。それが行ういくつかのこと ('//' コメントなど) は、実際には、C++ から派生した C90 モードに追加された拡張機能であり、これはたまたま C99 にもある可能性があります。C コードをコンパイルするとき、MSVC は '//' コメントを C90 の拡張機能として扱います。C90 コードと C99 コードを混在させているわけではありません。

C ファイルを C++ としてコンパイルすることにより、「より良い」C99 サポートを得ることができます。これにより、たとえばfor、ループにスコープされたステートメント内のステートメントや変数宣言に散在できる宣言を取得できます。for

Microsoft は、C99 から C++ コンパイラ モードに ( stdint.hVS2010 に追加されたように) C99 から C++ コンパイラ モードに追加したとしても、MSVC に C99 サポートを追加することにまったく関心がないようです。

于 2010-04-16T21:03:12.903 に答える