Введение в модули в C++
Модуль - именованный набор объявлений,
который компилируют отдельно от заголовка
и подключают директивой import, а не
цепочкой #include.
Точка входа main.cpp не заменяет модуль:
интерфейс живет в файле модуля, а программа
лишь импортирует опубликованные имена.
Сборка модулей зависит от компилятора; для
g++ часто нужны флаги -std=c++20
и -fmodules-ts, у других компиляторов
набор ключей иной.
В интерфейсе модуля demo оставим
скрытое объявление и экспортируем функцию
answer:
export module demo;
void hidden();
export int answer() {
return 7;
}
Файл программы импортирует модуль и обращается
только к экспортированному имени; вызов
hidden снаружи недоступен:
import demo;
#include <iostream>
int main() {
std::cout << answer() << "\n";
// hidden(); // имя не видно вне модуля demo
return 0;
}