コンパイラ警告 (レベル 1) C5050

モジュール 'module_name' のインポート中に互換性のない環境が発生する可能性があります: issue

解説

モジュールのコマンド ライン オプションがモジュールの作成側とモジュールの使用側で一貫していない場合に必ず、コンパイラで C5050 が発生します。

この警告は Visual Studio 2017 バージョン 15.9 で新たに追加されたものです。 これが生成されるのは、/experimental:module コンパイラ オプションで指定したモジュールを作成または利用するときのみです。

次の例には、2 つの問題があります。

  • 使用側 (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".

この問題を解決するには、モジュールと使用側コードの両方で同じコンパイラ コマンド ライン オプションを使用します。