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)的一部分。
我试图让 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)的一部分。