4

プロジェクトのコンパイル時に Visual Studio で ANSI C 標準を適用しようとしていますが、うまくいきません。任意のヒント?すべてのチュートリアルを読み、/Za オプションを有効にして、ファイルに (.cpp ではなく) .c という名前を付けました。ただし、次のプログラムは引き続き正常にビルドされます。

#include <stdio.h>
void main(void)
{
    for (int i = 0; i < 10; i++)
    {
    }
    int f = 0;
}

しかし、そうすべきではありません。ANSI C 標準を尊重するには、次のようにする必要があります。

#include <stdio.h>
void main(void)
{
    int i;
    int f = 0;
    for (i = 0; i < 10; i++)
    {
    }
}

GCC オプション " -ansi " と " -Wpedantic " に相当するものを希望します。これはVSでも可能ですか?

4

1 に答える 1

4

このページから、MSVC 2015 は C99 のみをサポートしているようです:

C99準拠 Visual Studio 2015 は、Visual C++ コンパイラでまだサポートされていないコンパイラ機能に依存するライブラリ機能を除いて、C99 標準ライブラリを完全に実装しています (たとえば、<tgmath.h> は実装されていません)。

そのページのどこにも C89 互換性についての言及はありません。

この/Zaスイッチは、 Microsoft 固有の拡張機能のみを無効にします。

Visual C++ コンパイラは、ANSI C89、ISO C99、または ISO C++ 標準のいずれかで指定されている機能を超える多くの機能を提供します。これらの機能は、まとめて C および C++ に対する Microsoft 拡張機能として知られています。これらの拡張機能は既定で使用でき、/Za オプションが指定されている場合は使用できません。特定の拡張機能の詳細については、「C および C++ の Microsoft 拡張機能」を参照してください。

サポートする公式の C 標準 (C99 など) の一部である場合、Microsoft 以外の特定の拡張機能は無効になりません。

于 2017-02-04T17:14:14.993 に答える