Я знаю, что прекомпилированные заголовки используются для ускорения компиляций, но есть ли какие-либо do's и don'ts в какие файлы я должен включить в них? Например, у меня есть проект, который использует много ускоряющих libs, поэтому я просто включаю файлы заголовков boost в stdafx.h
(я использую VS2008). Должен ли я включать в них каждый стандартный файл заголовка? Будет ли это увеличивать размер моего исполняемого, даже если я, например, включил <vector>
, но никогда не использовал std::vector
? Неплохо ли включать заголовочные файлы моего проекта в stdafx.h?Предварительно скомпилированные заголовки: делаете и не делаете?
ответ
Предварительно скомпилированные заголовки не влияют на размер исполняемого файла, а только на скорость компиляции. Поскольку они предварительно скомпилированы, их не нужно перекомпилировать все время. Windows.h является основной базой этой функции.
Вообще говоря, каждый заголовочный файл, который вы используете в приложении, и который не изменяется часто, должен идти в предварительно скомпилированный файл заголовка. Это ускорит компиляцию, потому что предварительно скомпилированный заголовочный файл скомпилируется только один раз.
Если вы добавите файл заголовка, который часто изменяется, вы пропустите точку предварительно скомпилированного файла заголовка, потому что этот часто изменяющийся заголовочный файл приведет к перекомпиляции всего вашего проекта, возможно, излишне.
В частности, определяет класс шаблона, поэтому, если вы не будете использовать std :: vector, накладные расходы не будут большими. Однако я бы посоветовал не добавлять файлы заголовков, как стандартные, так и общие, если они вам действительно не нужны. Есть некоторые накладные расходы на время компиляции, двоичный размер, и это может вызвать конфликты позже в проекте, так зачем добавлять что-то, если вам это действительно не нужно?
Это хорошая идея включить стандартные заголовочные файлы C++ и заголовки библиотеки ускорений и любые другие заголовки из сторонних библиотек, которые вы часто используете. Это не повлияет на размер вашего исполняемого файла.
Однако вы не должны включать заголовки из своего собственного проекта, так как весь проект нужно перестраивать всякий раз, когда вы вносите изменения в эти заголовки.