Visual Studio C语言或者C++项目,如果设置“禁用语言扩展”为“是/Za”,那么表示呢?
/Za 编译器选项禁用与 ANSI C89/ISO C90 不兼容的 Microsoft 对 C 语言的扩展。
这样如果项目代码中包含了Microsoft对C语言的扩展,且不兼容于ISO C90等标准,则编译器会报错。
默认情况下是启用 Microsoft 扩展的。可以使用 /Za 编译器选项禁用大多数 MSVC C 扩展。如果想要兼容标准,则设置为是/Za 。
这样可以兼容GCC,g++等编译器。
设置方法如下图:

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 选项可能会导致意外行为,不建议使用该选项。