1

Тема: Модулі C++20 Лінукс

Як налаштувати підтримку модулів з C++20 для Manjaro в Code Blocks?
Поставив стандартним компілятором Clang 15.0.7,
відмітив прапорець для підтримки C++20,
але все одно не працює import <iostream>; .
Видає таку помилку:
error: header file <iostream> (aka '/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/iostream') cannot be imported because it is not known to be a header unit.

2

Re: Модулі C++20 Лінукс

Vitaliy_Danmer написав:

Поставив стандартним компілятором Clang 15.0.7,

usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.1.1

Розбирайтеся, чому у вас clang намагається файли gcc використовувати

3 Востаннє редагувалося wander (30.07.2023 20:05:05)

Re: Модулі C++20 Лінукс

Vitaliy_Danmer написав:

Видає таку помилку:
error: header file <iostream> (aka '/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/iostream') cannot be imported because it is not known to be a header unit.

Схоже модулі все ще повноцінно не заїхали у clang. Як варіант можете <iostream> загорнути у свій модуль:

// foo.cppm
module;
#include <iostream>
export module foo;

export void foo() {
    std::cout << "Hello from foo" << std::endl;
}

І вже потім використовувати цей модуль, наприклад:

// main.cpp
import foo;
int main() {
    foo();
}

Але це не дуже гарно. І потенційно все ще може поламатись.

Vitaliy_Danmer написав:

Як налаштувати підтримку модулів з C++20 для Manjaro в Code Blocks?

Хз, ніяк? Наскільки я знаю, то наразі лише студійний компілятор повноцінно підтримує модулі.

Прихований текст

https://i.ibb.co/qNwpR2q/image.png

P.S. Я б їх все ще не використовував. Та і який сенс? На момент їх прийняття вони вже були застарілі :D

Подякували: Teg Miles, leofun01, koala, mimik4