在Visual Studio 2015中实施ANSI C标准

时间:2017-02-04 17:03:59

标签: c c89 visual-c++-2015

我正在尝试让Visual Studio在编译项目时强制执行A​​NSI 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 个答案:

答案 0 :(得分:3)

this page开始,MSVC 2015似乎只支持C99:

  

C99一致性 Visual Studio 2015完全实现了C99标准库,但依赖于Visual C ++编译器尚不支持的编译器功能的任何库功能除外(例如,&lt; tgmath。 h&gt;未实施。)

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

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

  

Visual C ++编译器提供了许多超出ANSI C89,ISO C99或ISO C ++标准中指定的功能。这些功能统称为C和C ++的Microsoft扩展。这些扩展在默认情况下可用,并且在指定/ Za选项时不可用。有关特定扩展的详细信息,请参阅Microsoft Extensions to C和C ++。

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

相关问题