如何在 Clang 中使用C++模块中给出的基本示例? 对我有用,但不导入标准库(例如通过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 worldn");
}
这给出了一个错误:
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安装llvm的clang,也没有工作。
使这样的东西工作的最简单方法是什么?
Clang 目前不支持 C 或 C++ 中的import std.io
语法。
来自 clang 的模块文档:
目前,导入申报没有 C 或 C++ 语法。Clang将在C++委员会中跟踪模块提案。请参阅"作为导入包含"部分,了解模块今天是如何导入的。
传递 -fmodules
标志时,#include
语句将自动转换为 import
。
从"包含为导入"部分:
模块会自动将 #include 指令转换为相应的模块导入。例如,包含指令
#include <stdio.h>
将自动映射到模块 std.io 的导入。