编译器警告(等级 1)C5050

导入模块“module_name”时可能不兼容的环境:issue

备注

每当模块的命令行选项在模块创建端和模块使用端之间不一致时,编译器就会引发 C5050。

此警告是 Visual Studio 2017 版本 15.9 中的新增功能。 它仅在创建或使用由 /experimental:module 编译器选项指定的模块时生成。

示例

以下示例中存在两个问题:

  • 在消耗端 (main.cpp) 上,没有指定 /EHsc 选项。

  • 创建端和消耗端上的 C++ 版本分别为 /std:c++17/std:c++14

cl /EHsc /std:c++17 m.ixx /experimental:module
cl /experimental:module /module:reference m.ifc main.cpp /std:c++14

编译器对这两种情况都引发 C5050:

warning C5050: Possible incompatible environment while
importing module 'm': mismatched C++ versions.
Current "201402" module version "201703".

若要解决此问题,请对模块和所使用的代码都使用相同的编译器命令行选项。