我正在尝试让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?
答案 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特定扩展。