6

如何在 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");
}

这给出了一个错误: 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 的叮当声,但也没有用。

做这样的事情最简单的方法是什么?

4

1 回答 1

2

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

来自 clang 的模块文档

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

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

包含为导入部分:

模块自动将#include 指令转换为相应的模块导入。例如,包含指令

#include <stdio.h>

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

于 2018-04-16T22:19:54.790 回答