препроцессор vs 2008 определяет true, но код все еще неактивен - PullRequest
1 голос
/ 30 августа 2011

Пример кода

#if (COMPUTER_NUMBER == PRIMARY_COMPUTER)
if (platformType == NAV_BASESTATION) {
    nav->once(cycleno);      
    controller->once(cycleno);      

и т. Д.Все, что ниже #, затенено.У меня есть большая кодовая база, которая состоит из многих из этих типов макросов.Код имеет несколько версий в зависимости от цели, которая управляется несколькими ключевыми параметрами, подобными этим.Несмотря на то, что макрос был задан в настройках проекта, и, несмотря на мои попытки установить его в файле кода для обнаружения intellisense, и, несмотря на мой сброс настроек vs для запуска нового сканирования intellisense, блок кода неактивен и не можетпробежаться с intellisense.Я скачал пробную версию Visual Assist и пытаюсь понять, подойдет ли она.

Я попытался добавить #define COMPUTER_NUMBER = PRIMARY_COMPUTER прямо над такими строками кода, как вставлено выше, а также сохранить, закрыть и открыть снова.в надежде на начало нового сканирования intellisense, но, похоже, ничего не происходит.Я могу даже использовать intellisense для имени макроса после этого и сказать, что перейти к определению, которое приведет меня туда, где я определил макрос как это значение, но это, как мы все знаем, упрямое животное.Что-нибудь, что я должен попробовать, или уточнить?

Спасибо

Ответы [ 2 ]

3 голосов
/ 03 сентября 2011

Не является решением проблемы препроцессора, но вы можете просто отключить функцию неактивного кода.Снимите отметку Tools | Options | Text Editor | C/C++ | Formatting | Colorize inactive code blocks in a different color

0 голосов
/ 08 июня 2012

Я знаю, что это старый, но у меня все еще была проблема. У меня был проект, в котором был определен препроцессор BLUETOOTH, но весь исходный файл выделен серым цветом. Он по-прежнему создавался так, как и должен, но это раздражало, потому что его было трудно читать, и ни одна из областей #pragma не работала, поэтому я не мог представить его в обрисованной форме.

Единственный способ, которым я смог обойти это, - это зайти в свойства проекта, удалить препроцессор BLUETOOTH, нажать «Применить», а затем добавить его обратно и «Применить». И затем весь этот выделенный серым цветом текст был возвращен к нормальным цветам.

Поскольку это, похоже, ошибка, я не знаю, насколько хорошо этот подход решит проблемы других людей, о которых я уже писал, но сработал для меня.

Еще большая проблема для меня заключается в том, что intellisense НЕ работал в затененном тексте (он действовал как неактивный), но компиляция правильно создала затененный код.

...