Есть ли способ, чтобы препроцессор обнаружил, что код в текущем единицах перевода использует (или создает) предварительно скомпилированные заголовки?
---
Фактическая проблема, с которой я сейчас сталкиваюсь, заключается в том, что я нахожусь в проекте, который является , злоупотребляющим PCH, предварительно скомпилировав практически все файлы заголовков.
Это означает, что нет ни одного из понятного управления зависимостями, которое вы можете получить из #includes и время компиляции ужасно. Практически каждое изменение вызовет полную перестройку.
Приложение способ для больших, чтобы просто исправить его за один раз, а некоторые из старых парней отказываются от , чтобы поверить, что прекомпиляция ничего не является плохим. Сначала мне нужно это доказать.
Так что я должен сделать это шаг за шагом и убедиться, что мои изменения не влияют на код , который скомпилирован старым способом PCH.
Мой план состоит в том, чтобы сделать ifdef из PCH.h и работать с версией без PCH, когда у меня есть время, чтобы сэкономить.Обнаружение предварительно скомпилированных заголовков
#ifdef USES_PCH
#include "PCH.h"
#elif
// include only whats needed
#endif
Я хотел бы избежать определения USES_PCH в командной строке и вручную сохранить его в синхронизации с/Y, что, кроме того, если не будет очень элегантный, будет боль. Существует множество конфигураций и модулей для манипулирования файлами и большого количества файлов, которые не соответствуют значениям по умолчанию для проекта.
Конечно препроцессор уже знает, является ли это предполагается генерировать или использовать скомпилированные заголовки. Это не нужно * обнаруживать * что угодно. Вы вместо этого хотели спросить, может ли обработанный * код * обнаружить его, например, с помощью некоторой команды 'ifdef'? –
Да, я хочу сделать #ifdef __USES_PCH или что-то подобное – grimner
Какова проблема, которую вы хотите решить? – peterchen