Выбор ответа Middle Современный C++20/23 обновлено
Зачем модули
Вопрос
Главное преимущество модулей C++20 перед #include:
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Интерфейс компилируется один раз, макросы и детали наружу не протекают. include вставляет текст заголовка в каждую единицу трансляции заново: огромные объёмы повторного разбора и утечка макросов.
Варианты ответа
- Модули позволяют не писать объявления функций до их использования
- Модули отменяют линковку: код подставляется прямо при импорте
- Интерфейс компилируется один раз, макросы и детали наружу не протекаютправильный ответ
- Модули работают только с header-only библиотеками без
.cppфайлов
Разбор
#include вставляет текст заголовка в каждую единицу трансляции заново: огромные объёмы повторного разбора и утечка макросов. Модуль компилируется в бинарный интерфейс (BMI) один раз, import подключает его быстро, а наружу видно только то, что помечено export.
- Объявления по-прежнему нужны, просто они в интерфейсе модуля.
- Линковка остаётся.
- Модули не ограничены header-only.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.