コンパイラ警告 (レベル 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".
この問題を解決するには、モジュールと使用側コードの両方で同じコンパイラ コマンド ライン オプションを使用します。