Нужно ли каждому файлу #include "stdafx.h" при использовании предварительно скомпилированных заголовков? Или его нужно включать только в исходные файлы.

РЕДАКТИРОВАТЬ: Кроме того, в моем предварительно скомпилированном файле заголовков #includes много заголовков STL. Но в моих заголовках иногда есть функции, которые возвращают std::vector или что-то в этом роде, поэтому мне все равно нужно #include <vector>. Это хуже, чем включение stdafx.h? Мне нужно включить определения для моей среды модульного тестирования.

2
rlbond 26 Июн 2009 в 07:16

4 ответа

Лучший ответ

Каждый исходный файл должен включать его перед любой строкой без комментариев. Заголовки не должны включать его, так как каждый исходный файл будет включать его перед любым другим заголовком.

4
bdonlan 26 Июн 2009 в 03:21

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

0
Bojan Resnik 26 Июн 2009 в 08:38

Все ваши файлы C / C ++ должны иметь предварительно скомпилированный заголовок вверху, да - если он установлен для этого проекта. Но вы можете выключить / включить его для каждого файла C / C ++ (что сказал Кей).

Если вам нужно включить стандартные заголовки, поместите их все в предварительно скомпилированный заголовок. Затем они понадобятся вам в обычных файлах заголовков (.h). Пока все проекты и файлы используют предварительно скомпилированные заголовки.

0
Simeon Pilgrim 26 Июн 2009 в 04:18

Вы можете указать, хотите ли вы использовать предварительно скомпилированный файл заголовка на уровне проекта или файла. Для настройки проекта перейдите в диалоговое окно свойств проекта и щелкните Свойства конфигурации / C / C ++ / Предварительно скомпилированные заголовки. Есть опция для создания / использования предварительно скомпилированного заголовка. Вы можете перезаписать настройку уровня проекта для каждого файла .cpp, установив тот же параметр в диалоговом окне свойств файла.

1
Kei 26 Июн 2009 в 03:28