-fmodules当使用下面所示的命令进行编译时,以下简单的测试用例文件给了我一个编译时错误,提示来自 Clang 的 github 镜像的“master” 。我想知道这是否是 Clang 的新实验性模块功能的一个错误——可能是标准库模块映射的实现问题——或者我是否做错了什么。-fbuiltin-module-map如果我添加到命令中,错误仍然出现。stdint.h有趣的是,如果我替换为 ,该错误就不再出现cstdint。
#include <stdint.h>
uint64_t foo;
Run Code Online (Sandbox Code Playgroud)
这是我的编译命令,带有错误消息:
anhall@leviathan: /Users/anhall/impersonal/code/llvm-reflexpr/install/bin/clang++ -o module-uint64_t-test.o -c module-uint64_t-test.cpp --std=c++1z -fmodules
module-uint64_t-test.cpp:3:1: error: missing '#include <_types/_uint64_t.h>'; declaration of 'uint64_t' must be imported from module 'Darwin.POSIX._types._uint64_t' before it is
required
uint64_t foo;
^
/usr/include/_types/_uint64_t.h:31:28: note: previous declaration is here
typedef unsigned long long uint64_t;
Run Code Online (Sandbox Code Playgroud)
有关我正在使用的构建的信息:它来自 Matus Chochlik 的 github Clang 镜像的分支;但我设置为与原始 clang git 镜像中“master”的(当时)头相对应的提交(换句话说,它不包括来自 Matus Chochlik 的功能“reflexpr”分支的提交):
anhall@leviathan: /Users/anhall/impersonal/code/llvm-reflexpr/install/bin/clang++ -v
clang version 4.0.0 …Run Code Online (Sandbox Code Playgroud)