Предварительно скомпилированные заголовки, включая файлы и Intellisense

У меня есть предварительно скомпилированный заголовок, который содержит include для различных сторонних библиотек, например:

#ifndef PRECOMPILED_H
#define PRECOMPILED_H

#include "booststuff.h"#include "luastuff.h"
#endif

куда booststuff.h а также luastuff.h являются заголовочными файлами в моем проекте, которые просто включают различные вещи, связанные с boost / lua, и устанавливают некоторые псевдонимы typedefs / usings / namespace.

Я настроил предварительно скомпилированный заголовок обычным способом в Visual Studio (2012) и использую опцию принудительного включения, чтобы включить его в каждый файл cpp.

В файлах cpp я также был довольно осторожен с #include «booststuff.h», где я его и использую (иногда я отключаю скомпилированные заголовки, чтобы проверить это). Тем не менее, в последнее время меня интересует, хорошая ли это идея. Так:

  • Может ли случиться что-нибудь плохое, если я снова включу файл, который уже включен в предварительно скомпилированный заголовок (я не понимаю, почему это так, но я видел вещи о том, что заголовки нужно включать «в том же порядке», и не совсем понял о чем они были)?

  • Влияет ли это на Intellisense (необычно медленно с довольно маленьким проектом)? Я был бы рад отказаться от некоторой мобильности для лучшего Intellisense, так как в настоящее время у меня нет желания переключать платформы.

2

Решение

Если каждый включаемый файл имеет #pragma once в нем компилятор полностью пропустит чтение файла при второй и последующих попытках включить его. Это не указано явно, но я предполагаю, что предварительно скомпилированный заголовок также отслеживает эту информацию.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]