/Za、/Ze(禁用语言扩展)
/Za 编译器选项禁用与 ANSI C89/ISO C90 不兼容的 Microsoft 对 C 语言的扩展,并发出错误。 弃用的 /Ze 编译器选项启用 Microsoft 扩展。 默认情况下将启用 Microsoft 扩展。
语法
/Za
/Ze
备注
注意
不建议在将代码编译为 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。