clang — как использовать стандартную библиотеку с модулями C ++? (например: `import std.io`)

Основной пример приведен в Как использовать модули C ++ в Clang? работает для меня, но не импортирует стандартную библиотеку (например, через import std.stdio;); после перехода http://clang.llvm.org/docs/Modules.html не было ясно, как использовать стандартную библиотеку в модуле C ++, например:

// foo.cppm:
export module foo;
// works: #include <stdio.h>
// none of these work:
import std.stdio;
import std.io;
import std;

export void test_foo(){
printf("hello world\n");
}

это дает ошибку:

clang++ -std=c++17 -fmodules-ts --precompile foo.cppm -o foo.pcm
foo.cppm:4:8: fatal error: module 'std.stdio' not found

НОТА:

clang++ --version
Apple LLVM version 9.1.0 (clang-902.0.39.1)
Target: x86_64-apple-darwin17.4.0

Я на OSX.
Я также попробовал clang от brew install llvm и тоже не работал.

Какой самый простой способ сделать что-то подобное?

6

Решение

Clang в настоящее время не поддерживает import std.io синтаксис в C или C ++.

Из лязга модульная документация:

В настоящее время нет синтаксиса C или C ++ для объявлений импорта. Clang будет отслеживать предложение модулей в комитете C ++. См. Раздел «Включает как импорт», чтобы увидеть, как модули импортируются сегодня.

Когда вы передаете -fmodules флаг, #include заявления автоматически переводятся в import,

От Включено как импорт раздел:

модули автоматически переводят директивы #include в соответствующий импорт модуля. Например, директива включения

#include <stdio.h>

будет автоматически сопоставлен с импортом модуля std.io.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector