VC ++实验模块不起作用

时间:2017-11-20 16:12:31

标签: c++ visual-studio module visual-studio-2017 c++-experimental

我正在尝试Visual Studio 2017版本15.4.4中的模块的实验性实现。我按照此处描述的说明https://blogs.msdn.microsoft.com/vcblog/2017/05/05/cpp-modules-in-visual-studio-2017/。我能够在控制台应用程序中快速运行。

import std.core;
int main()
{
   std::cout << "Hello modules!" << std::endl;
   return 0;
}

导入和使用可用的标准模块不是问题(据我所知,目前为止)。

但是,当我定义自己的模块时,没有任何作用。我添加了一个文件 system.ixx (项目类型C / C ++编译器),其中包含以下内容:

import std.core;
export import system.io;

export struct console
{
   void write(std::string_view text) { std::cout << text; }
   void write_line(std::string_view text) { std::cout << text << std::endl; }   
};

我将import system.io添加到 main.cpp

import std.core;
import system.io;

int main()
{
   std::cout << "Hello modules!" << std::endl;
   return 0;
}

我收到以下错误:

1>system.ixx
1>system.ixx(2): error C2230: could not find module 'system.io'
1>main.cpp
1>main.cpp(2): error C2230: could not find module 'system.io'

我还在编译器选项中添加了/module:reference system.io.idf,但没有从 system.ixx 生成的 system.io.idf 文件。

我知道这是实验性的并且有很多问题,但我想知道我应该做些什么来使这个简单的事情发挥作用。

1 个答案:

答案 0 :(得分:0)

system.ixx中,尝试将export import system.io更改为export module system.io。您还希望确保export module ...声明出现在文件顶部。因此system.ixx变为:

export module system.io;
import std.core;

export struct console
{
   void write(std::string_view text) { std::cout << text; }
   void write_line(std::string_view text) { std::cout << text << std::endl; }   
};