Скомпилированные заголовки MSVC: Какие файлы должны содержать #include "stdafx.h"? - PullRequest
2 голосов
/ 26 июня 2009

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

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

Ответы [ 4 ]

4 голосов
/ 26 июня 2009

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

1 голос
/ 26 июня 2009

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

0 голосов
/ 26 июня 2009

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

0 голосов
/ 26 июня 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...