2015 年 Visual Studio 执行 ANSI C 标准

Enforce ANSI C Standard in Visual Studio 2015

我试图让 Visual Studio 在编译项目时强制执行 ANSI C 标准,但我无法让它工作。 有小费吗? 我已经阅读了所有教程,我启用了 /Za 选项,并将我的文件命名为 .c(不是 .cpp)。但是,以下程序仍然可以成功构建:

#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 中甚至可能吗?

来自this page,MSVC 2015似乎只支持C99:

C99 Conformance Visual Studio 2015 fully implements the C99 Standard Library, with the exception of any library features that depend on compiler features not yet supported by the Visual C++ compiler (for example, <tgmath.h> is not implemented).

该页面上的任何地方都没有提及 C89 兼容性。

/Za switch 仅禁用 Microsoft 特定的 扩展:

The Visual C++ compiler offers a number of features beyond those specified in either the ANSI C89, ISO C99, or ISO C++ standards. These features are known collectively as Microsoft extensions to C and C++. These extensions are available by default, and not available when the /Za option is specified. For more information about specific extensions, see Microsoft Extensions to C and C++.

它不会禁用 non-Microsoft 特定扩展,如果它们是它支持的官方 C 标准(如 C99)的一部分。