/Za
编译器选项禁用与 ANSI C89/ISO C90 不兼容的 Microsoft 对 C 语言的扩展,并发出错误。 弃用的
/Ze
编译器选项启用 Microsoft 扩展。 默认情况下将启用 Microsoft 扩展。
不建议在将代码编译为 C++ 时使用
/Za
。
/Ze
选项已弃用,因为其行为默认处于打开状态。 有关已弃用编译器选项的列表,请参阅
已弃用和已删除的编译器选项
。
Microsoft C/C++ 编译器支持通过两种方式编译 C 代码:
当源文件具有
.c
扩展名或指定
/Tc
或
/TC
选项时,编译器默认使用 C 编译模式。 C 编译器是 C89/C90 编译器,默认允许 Microsoft 对 C 语言的扩展。 有关特定扩展的详细信息,请参阅
适用于 C 和 C++ 的 Microsoft 扩展
。 指定 C 编译和
/Za
选项时,C 编译器严格符合 C89/C90 标准。 编译器将 Microsoft 扩展关键字视为简单标识符,禁用其他 Microsoft 扩展,并自动定义 C 程序的
__STDC__
预定义宏。
编译器可以在 C++ 编译模式下编译 C 代码。 此行为是指定
/Tp
或
/TP
选项时,没有
.c
扩展名的源文件的默认行为。 在 C++ 编译模式下,编译器支持已纳入 C++ 标准的 ISO C99 和 C11 标准的部分内容。 几乎所有 C 代码也是有效的 C++ 代码。 少量的 C 关键字和代码构造是无效的 C++ 代码,或者用 C++ 以其他方式解释。 在这些情况下,编译器的行为符合 C++ 标准。 在 C++ 编译模式下,
/Za
选项可能会导致意外行为,不建议使用该选项。
其他编译器选项可能会影响编译器确保标准一致性的方式。 有关指定特定标准 C 和 C++ 行为设置的方法,请参阅
/Zc
编译器选项。 有关其他 C++ 标准一致性设置的信息,请参阅
/permissive-
和
/std
编译器选项。
有关 Visual C++ 一致性问题的详细信息,请参阅
非标准行为
。
在 Visual Studio 开发环境中设置此编译器选项
打开项目的“属性页” 对话框。 有关详细信息,请参阅
在 Visual Studio 中设置 C++ 编译器和生成属性
。
选择“配置属性”
>“C/C++”
>“语言”
属性页。
修改“禁用语言扩展”属性
。
以编程方式设置此编译器选项
请参阅
DisableLanguageExtensions
。
编译器选项
/Zc(一致性)
/permissive-(标准符合性)
/std(指定语言标准版本)