/Zc:externC
(使用标准 C++ extern "C"
规则)
/Zc:externC
编译器选项告诉编译器符合 C++ 标准,并为声明为 extern "C"
的函数强制执行一致的参数声明。
语法
/Zc:externC
/Zc:externC-
备注
/Zc:externC
编译器选项检查使用 extern "C"
声明的函数的定义。
从 Visual Studio 2019 版本 16.3 开始,/Zc:externC
选项可用。 未设置 /permissive-
选项时,此选项关闭。 在 Visual Studio 的早期版本中,默认情况下或如果指定了 /Zc:externC-
,Visual Studio 允许匹配 extern "C"
函数的声明。 /permissive-
选项启用 /Zc:externC
,因此在使用 /std:c++20
或 /std:c++latest
的项目中默认启用。 /Zc:externC
选项必须位于命令行上的 /permissive-
选项之后。
不匹配 extern "C"
的声明可能会导致编译器错误 C2116 和 C2733。 在 C++ 代码中,如果你多次声明一个 extern "C"
函数并使用不同的参数类型,即使这些类型具有相同的定义,也会发生错误。 /Zc:externC-
选项会放宽此检查,并且不会产生这些错误。
在 Visual Studio 中设置此编译器选项
打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。
选择“配置属性”>“C/C++”>“命令行”属性页。
将
/Zc:externC
或/Zc:externC-
添加到“附加选项:”窗格中。