Страницы

Поиск по вопросам

среда, 25 декабря 2019 г.

Стандарнтые заголовочные файлы внутри stdafx.h

#cpp #visual_studio_2015 #header


Стоит ли включать в предкомпилированный заголовочный файл stdafx.h заголовочные файлы
стандартной библиотеки (string, algorithm и т.п.), ведь они не изменяются? 

Смущает то, что необходимо писать #include "stdafx.h" в каждом .cpp файле. Используется
Visual Studio 2015.
    


Ответы

Ответ 1



Если вы приняли решение использовать Precompiled Headers (для ускорения сборки), то заголовки стандартных библиотек нужно включать в stdafx.h ведь для этого весь сыр-бор и затевается, чтобы их один раз компилятор распарсил, и далее для всех остальных файлов уже использовал приготовленные (прекомпилинные) файлы. Соответственно как раз не изменяемые файлы и надо включать в него, чтобы не вызывать лишний раз пересборки этих precompiled headers. Механизм прекомпиленных заголовков довольно гибкий. Вы можете отключить его полностью, или для отдельных файлов. А также для одной группы файлов использовать один precompiled header, для другой группы другой. Ну и имя stdafx.h хоть и по дефолту, но не фиксированное, можете изменить на любое другое.

Ответ 2



Если я правильно понял ваш вопрос, то я не советую включать заголовочные файлы внутрь заголовка . Во-первых, это делает код менее читабельным, так как сеет сомнение у читающего ваш код, включили ли вы правильно все заголовки, или программа компилируется лишь из-за того, что в некоторой реализации стандартной библиотеки в стандартный заголовок был включен другой стандартный заголовок. Во-вторых, такой код не будет переносим на платформы, где отсутствует заголовок . Если же не включать в него заголовочные файлы, то вам будет достаточно просто его закомментировать или удалить. То есть упрощается работа. И никто не будет спрашивать, а что это за заголовок.

Комментариев нет:

Отправить комментарий