如何在C++模块中使用标准库?(例如:`import std.io`)

tim*_*our 6 c++ std clang standard-library c++-modules

我如何在Clang中使用C++模块中给出的基本示例适合我,但不导入标准库(例如via 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");
}
Run Code Online (Sandbox Code Playgroud)

这给出了一个错误: 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上.我也试过brew install llvm的clang也没用.

制作这样的作品最简单的方法是什么?

Inc*_*tic 3

Clang 目前不支持import std.ioC 或 C++ 语法。

来自 clang 的模块文档

目前,导入声明没有 C 或 C++ 语法。Clang 将跟踪 C++ 委员会的模块提案。请参阅“作为导入包含”部分以了解当前如何导入模块。

当您传递该-fmodules标志时,#include语句会自动转换为import.

从“包含为导入”部分:

模块会自动将 #include 指令翻译为相应的模块导入。例如,include 指令

#include <stdio.h>

将自动映射到模块 std.io 的导入。