Модули в C++ — что это и когда использовать?
Что такое модули? Зачем они нужны и как они отличаются от заголовочных файлов? Когда стоит использовать одно, а когда второе?
Ответы (1 шт):
https://docs.microsoft.com/ru-ru/cpp/cpp/modules-cpp?view=vs-2019
Что такое модули?
Модуль — это набор файлов исходного кода, которые компилируются независимо от единиц трансляции, которые их импортируют.
Зачем они нужны и как они отличаются от заголовочных файлов?
Модули устраняют или значительно снижают многие проблемы, связанные с использованием файлов заголовков, а также могут сократить время компиляции.
Макросы, директивы препроцессора и неэкспортированные имена, объявленные в модуле, не видны и поэтому не влияют на компиляцию записи преобразования, которая импортирует модуль.
Модули можно импортировать в любом порядке, не заботясь о
переопределениях макросов.Объявления в импортируемой записи не участвуют в разрешении перегрузки или поиске имен в импортированном модуле.
После компиляции модуля результаты сохраняются в двоичном файле, который описывает все экспортированные типы, функции и шаблоны. Этот файл может обрабатываться гораздо быстрее, чем файл заголовка, и может использоваться компилятором каждый раз, когда модуль импортируется в проект.
Когда стоит использовать одно, а когда второе?
Рекомендуется, чтобы новые проекты использовали модули, а не файлы заголовков, насколько это возможно. Для больших существующих проектов в рамках активной разработки мы рекомендуем поэкспериментировать с преобразованием устаревших заголовков в модули, чтобы определить, будет ли получено осмысленное сокращение времени компиляции.