Экспериментальные модули VC++ не работают

Я пытаюсь экспериментальной реализации для модулей в 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++ compiler) со следующим содержимым:

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.io.idf, созданного из system.ixx.

Я знаю, что это экспериментально и имеет много проблем, но мне было интересно, должен ли я сделать, чтобы эта простая вещь работала.

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; }   
};
Другие вопросы по тегам