Есть ли способ узнать, компилируется ли сейчас код как часть PCH? - PullRequest
1 голос
/ 29 апреля 2011

Мне нужно разветвить определенный оператор в файле .h предварительно скомпилированного заголовка, основываясь на том, используется ли сейчас .h для создания PCH (т. Е. Включено в cpp, скомпилированный с / Yc ), или теперь включены только для использования PCH (т. е. включены в cpp, скомпилированный с / Yu).

Другими словами, я ищу что-то вроде -

#ifdef NOW_CREATING_THE_PCH
  #import yadayada_with_option_a
#else
  #import yadayada_with_option_b
#endif

... и ничего не могу найти. Любые идеи будут оценены!

Спасибо

-Ofek

[Edit:] Мне нужна эта причина в том, что я использую Incredibuild и начал получать это предупреждение . Согласно предложению FAQ, я хочу #import с no_implementation при создании PCH и с creation_only при использовании PCH.

Ответы [ 2 ]

1 голос
/ 29 апреля 2011

Вы можете специально изменить конфигурацию (в Visual Studio) stdafx.cpp (или любого имеющегося у вас исходного файла, скомпилированного с / Yc), чтобы определить символ NOW_CREATING_THE_PCH, оставив этот символ неопределенным для остальных исходных файлов ( которые компилируются с /Yu).

Это не то, что вы получаете из коробки, но если вам нужно сделать это только для одного проекта (или нескольких), это не проблема.

0 голосов
/ 29 апреля 2011

Хотя это не прямой ответ на ваш вопрос, самый простой способ решения этой проблемы - использовать оператор #import с no_implementation в заголовочном файле, который используется для генерации предварительно скомпилированного заголовка (обычно StdAfx.h).) и повторно #import файл заголовка в исходный файл, который используется для запуска генерации pch с параметром implementation_only.Таким образом, реализация функций-оболочек определяется, но только в одном месте.

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