Visual Studio неправильно маркирует неактивные блоки кода при использовании `# ifdef` - PullRequest
3 голосов
/ 28 октября 2010

В моем проекте куча #ifdefs. Макросы, используемые этими #ifdef, обычно передаются через командную строку с использованием опции '/D' для получения различных конфигураций сборки. Visual Studio неправильно предполагает, что эти макросы не определены, и выделяет блоки кода, присутствующие внутри этих #ifdef s. Проблема не в подсветке синтаксиса - я могу превратить серый код в цветной код из Options; главная проблема заключается в том, что я не могу перейти к определению функций каких-либо функций, присутствующих внутри этого #ifdef. Я попытался прочитать о Visual Studio файлах подсказок , но у меня это не сработало.

Может кто-нибудь помочь мне с этим вопросом? Я использую Visual Studio 2008.

Ответы [ 2 ]

2 голосов
/ 28 октября 2010

Вы определили несколько видов сборок в VS как конфигурации, такие как Debug, Release, или вы строите с помощью make-файлов? Если вы не учили VS о своих параметрах / D, то, думаю, это вам не поможет. Но вы должны иметь возможность настроить определения препроцессора в свойствах проекта (Configuration Properties, C / C ++, Preprocessor), чтобы получить желаемый эффект, верно?

Для каждой опции /DMACRO=XXX, передаваемой компилятору, укажите MACRO=XXX в Определениях препроцессора IntelliSense. Для каждой опции /DMACRO (без значения), которую вы передаете компилятору, укажите MACRO в определениях препроцессора IntelliSense.

0 голосов
/ 28 октября 2010

Если вы не отлаживаете, и вы просто пытаетесь заставить intellisense или что-то еще реагировать, вы всегда можете просто набрать быстрый #define, чтобы заставить IDE вести себя.

Кажется, у вас проблема, похожая на эту:

Может ли intellisense быть включен в VS2008 в рамках директивных блоков препроцессора, например #ifndef ... # endif

...