01F*_*1F0 9 c++ visual-studio-2015
所以我在"Visual Studio 2015 Update 1" 中观看了一个显示新闻的视频,他们提到了实验性的C++模块支持(约8分钟).
这个版本实际支持多少功能?
我很乐意,如果有人会展示一些与Visual Studio /实验开关一起使用的代码示例,那么我就可以开始玩它了.
见加布里埃尔杜斯雷斯的CppCon 2015年呈现" 大型C++与模块:你应该知道什么 "在https://www.youtube.com/watch?v=RwdQA0pGWa4.
来自http://nibblestew.blogspot.com/2015/10/some-comments-on-c-modules-talk.html:
模块的使用方式(在演示文稿中大约40分钟)有一个令人讨厌的怪癖.基本方法是你有一个源文件foo.cpp,它定义了一个模块Foobar.要编译它你应该这样说:
cl -c/module foo.cxx
导致编译器输出foo.o以及Foobar.ifc,其中包含模块的二进制定义.要使用它,您将编译第二个源文件,如下所示:
cl -c baz.cpp/module:引用Foobar.ifc
这与Fortran的模块基本相同[...]
以下是根据@ dxiv答案中链接的视频中的说明,获取使用Update 1 RTM的简单示例的方法.
一,模块定义文件mine.ixx.用以下内容编译:cl /c /experimental:module mine.ixx.这将使:mine.obj和mine.ifc:
module mine;
export
{
int sum(int x, int y);
}
int sum(int x, int y) { return x + y; }
Run Code Online (Sandbox Code Playgroud)
接下来main.cpp使用模块,编译cl /c /experimental:module main.cpp.这将使main.obj:
#include <iostream>
import mine;
int main()
{
std::cout << sum(2000, 15) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后链接这些link *.obj,你应该得到一个main.exe.
请注意,目前这在VS内部效果不佳,因为它不了解模块所施加的排序要求 - 您必须手动修改项目文件才能执行此操作.
| 归档时间: |
|
| 查看次数: |
2525 次 |
| 最近记录: |