2015-11-22 5 views
9

私はvideoを見て、「Visual Studio 2015 Update 1」のニュースを見て、実験的なC++モジュールサポート(約8分)を挙げました。これまでのVisual Studio 2015のC++モジュールで何ができますか?

このバージョンで実際にどのくらいの機能がサポートされていますか?

誰かがVisual Studio/experimentalスイッチで動作するコード例を表示していたら、私はそれを使い始めることができます。

答えて

7

@ dxivの答えにリンクされているビデオの手順に基づいて、Update 1 RTMで作業する簡単な例を得る方法は次のとおりです。

まず、モジュール定義ファイルmine.ixx。コンパイル:cl /c /experimental:module mine.ixx。 、

module mine; 
export 
{ 
    int sum(int x, int y); 
} 

int sum(int x, int y) { return x + y; } 

main.cppモジュールを使用していますcl /c /experimental:module main.cppでコンパイルします。これはmine.objmine.ifcを行います。これはmain.objを行います:

#include <iostream> 
import mine; 

int main() 
{ 
    std::cout << sum(2000, 15) << std::endl; 
    return 0; 
} 

はその後link *.objでこれらをリンクし、あなたはmain.exeを取得する必要があります。

これは、モジュールが課す注文要件を理解していないため、現時点ではVS内部からうまく機能しないことに注意してください。これを行うにはプロジェクトファイルを手動で変更する必要があります。

+0

私はこの答えが好きです。しかし、私はこのソリューションをバットからすぐには使用できませんでした。後でリンカエラーを避けるために、/ MDスイッチを2番目のコンパイラステップに追加する必要がありました。異なるセットアップがあるかどうかはわかりません(Visual Studioのバイナリフォルダからすべてを実行しました)が、誰かが同じ問題を抱えていると言わなければならないと思いました。 – 01F0

+0

VSでは、モジュールのdefファイルを作成できますが、その拡張子はixxではありません。 – lsc

+0

@lasithc:これは "モジュール定義ファイル"とは別の意味です:) – porges

7

「モジュールで大規模C++:あなたがを知っておくべきこと」ガブリエル・ドス・レイスのCppCon 2015プレゼンテーションを参照してくださいhttps://www.youtube.com/watch?v=RwdQA0pGWa4

http://nibblestew.blogspot.com/2015/10/some-comments-on-c-modules-talk.htmlから:。

モジュールは(で使用されている方法foo.cppというソースファイルがあり、Foobarモジュールを定義しています。これをコンパイルするには、次のように記述します:

cl -c/module foo.cxx

コンパイラはfoo.oとFoobar.ifcを出力します.Foobar.ifcにはモジュールのバイナリ定義が含まれています。これは、基本的にはFortranがそのモジュールを[...]と同じ方法で参照Foobar.ifc

CL -c baz.cpp /モジュール:これを使用するには、このような第2のソースファイルをコンパイルします

+0

VS2015アップデート1で動作しませんRTM –

+0

@DmitriNesterukアップデートいただきありがとうございます。今日、特に "実験的な"機能を使って物事が速く動いています。 – dxiv

1

VS2015アップデート1 RTMでは、代わりに/experimental:module /module:importを使用してください。

+0

これは '/ module:reference'、'/module:import'はエラーを返します – porges

関連する問題