Множественные ошибки определения в Clang при использовании модулей CPPC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Множественные ошибки определения в Clang при использовании модулей CPP

Сообщение Anonymous »

Эта ошибка не имеет абсолютно никакого смысла, поскольку существует, по-видимому, неограниченное количество мест, где вы можете закомментировать или раскомментировать раздел, и он исчезнет. Выдана ошибка:

Код: Выделить всё

error: definition with same mangled name '_ZN6jeaiiiL6digitsE' as another definition
Минимальный пример приведен здесь, на Godbolt.
И здесь в качестве репозитория вы можете скачать.
На моем компьютере я использую Clang версии 22.0.0, но версия Godbolt — 21.1.0, и происходит то же самое.
Исходный код выглядит примерно так:
main.cpp:

Код: Выделить всё

#include "./StringClass.h"
#include 

import glm_module; // MOVING THE IMPORT HIGHER BEFORE THE INCLUDE MAKES IT COMPILE

struct Foo {
unsigned int member; // MAKING THIS TYPE INT INSTEAD OF UNSIGNED INT MAKES IT COMPILE
};

void selectPhysicalDevice()
{
//std::terminate(); // UNCOMMENTING THIS MAKES IT COMPILE

Foo foo{};
auto max_samplers = foo.member;

String str;
str.append(max_samplers); // COMMENTING THIS OUT MAKES IT COMPILE
// REPLACING max_samplers WITH AN INTEGER LITERAL, ie., 1, MAKES IT COMPILE

String str2;
str2.append(1); // COMMENTING THIS OUT MAKES IT COMPILE

}

int main()
{

}
Как видите, это не имеет абсолютно никакого смысла. Я попытался скомпилировать это в новой версии MSVC, и все компилируется нормально. Интересно, что ошибка исчезает при импорте ДО включения в Clang, потому что в GCC мне сказали, что все наоборот: импорт должен происходить ПОСЛЕ включения.

Подробнее здесь: https://stackoverflow.com/questions/798 ... pp-modules
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»