/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 开发环境中设置此编译器选项

  1. 打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性

  2. 选择“配置属性”>“C/C++”>“语言”属性页。

  3. 修改“禁用语言扩展”属性

以编程方式设置此编译器选项

请参阅 DisableLanguageExtensions

另请参阅

编译器选项
/Zc(一致性)
/permissive-(标准符合性)
/std(指定语言标准版本)