在Visual Studio 2015中执行ANSI C标准

4

我想让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中是否可能实现这一点?

1
第一个程序完全符合当前的ANSI C标准,这与当前的ISO C标准相同,通常称为C11(除了void main部分)。VS2015不支持它。它只支持一个标准,即C99,该程序也符合该标准。如果您想符合其他旧标准,如C89/90,则需要将工具集降级到类似v100(VS2010)的版本,或使用另一个编译器。在MSVC中没有像-std标志这样的东西。 - n. m.
1个回答

4

这个页面看来,MSVC 2015似乎只支持C99:

C99一致性 Visual Studio 2015完全实现了C99标准库,除了任何依赖于Visual C++编译器尚未支持的编译器特性的库功能(例如,<tgmath.h>未实现)。

该页面上没有提到C89兼容性。

/Za开关仅禁用微软特有的扩展:

Visual C++编译器提供了许多超出ANSI C89、ISO C99或ISO C++标准规定的功能。这些功能被统称为C和C++的微软扩展。这些扩展默认情况下可用,但在指定/Za选项时不可用。有关特定扩展的更多信息,请参阅C和C++的微软扩展。

如果非Microsoft特有的扩展是其支持的官方C标准的一部分(例如C99),它将不会被禁用。


我想我想要的是GCC选项的等效选项: -ansi -Wpedantic你能确认在Visual C++中这是不可能的吗? 谢谢 - user2527666
第一条引用仅涉及库,而非核心语言。 - Keith Thompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接