Clang ++ -fmodules ошибок с использованием типов после #include & lt; cstdint & gt;

Следующий простой файл тестового примера дает мне ошибку во время компиляции с подсказкой ‘master’ из зеркала github Clang, при компиляции с -fmodules, используя команду, показанную ниже. Мне интересно, если это ошибка с новой экспериментальной функцией модуля для Clang — возможно, проблема с реализацией карт модулей для стандартной библиотеки — или если я что-то не так делаю. Ошибка все еще появляется, если я добавляю -fbuiltin-module-map в команду. Интересно, что ошибка больше не появляется, если я заменяю stdint.h за cstdint,

#include <stdint.h>
uint64_t foo;

Вот моя команда компиляции с сообщением об ошибке:

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;

Информация о сборке, которую я использую: это от вилки Матуса Чохлика из зеркала github Clang; но я настроен на коммит, который соответствует (в то время) главе ‘master’ в оригинальном зеркале glang git (другими словами, он не включает коммиты из ветки ‘reflexpr’ функции Matus Chochlik):

anhall@leviathan: /Users/anhall/impersonal/code/llvm-reflexpr/install/bin/clang++ -v
clang version 4.0.0 (https://github.com/matus-chochlik/clang.git 1fa85026bfc23f5cda0b89598bd2056b817ae9d4) (https://github.com/llvm-mirror/llvm.git 069db88a3b2cae52023664fdd30378d3adc26566)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
InstalledDir: /Users/anhall/impersonal/code/llvm-reflexpr/install/bin

(Примечание: подозревая, что это ошибка, я также отправил вышеупомянутый отчет по электронной почте администраторам LLVM и намереваюсь подать его в Bugzilla LLVM, если они ответят и дадут мне логин. Но я решил опубликовать его и здесь, на случай, если что-то не так, или интересно всем, кто работает с поддержкой модулей C ++ 1z + в Clang)

Изменить 1:

Если я добавлю -v в командной строке компиляции, это показывает, что он действительно ищет мою сборку include каталоги, а не каталоги другой сборки Clang, например:

#include "..." search starts here:
#include <...> search starts here:
/Users/anhall/impersonal/code/llvm-reflexpr/install/bin/../include/c++/v1
/usr/local/include
/Users/anhall/impersonal/code/llvm-reflexpr/install/bin/../lib/clang/4.0.0/include
/usr/include
/System/Library/Frameworks (framework directory)
/Library/Frameworks (framework directory)
End of search list.

Я не знаю, могла ли проблема быть взаимодействием между заголовками моей сборки Clang и системными заголовками OS X в /usr/local/include а также /usr/include

4

Решение

Это была проблема в libc ++, которую я исправил в r287690. Если вы обновите свою собственную установку Clang / libc ++, эти проблемы должны быть исправлены.

За последний месяц я исправил ряд проблем с использованием libc ++ с модулями. Я буквально получил только все тесты libc ++, прошедшие вчера с включенными модулями.

3

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

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

По вопросам рекламы [email protected]