Eclipse CDT Не отслеживает макрос правильно

В настройках сборки я определяю DEBUG, когда в конфигурации сборки отладки, чтобы я мог заставить свой код разделить вещи в зависимости от того, какой тип сборки он есть.

Однако в Eclipse он затемняет части кода, которые исключены препроцессором, и это не ускоряется, когда я меняю настройку (в настоящее время я строю отладку или выпуск). Итак, у меня есть куча кода, который постоянно темнеет, а индекс Eclipse и другие полезные функции не работают внутри этих областей.

Как исправить? кто-нибудь еще сталкивался с этим?

Обновление: все еще проблема. В конечном итоге я отказался от своих конфигураций сборки для сборки и просто включил эту функциональность в командной строке. Просто чтобы я мог индексировать работу, когда я пишу свои модульные тесты.

Ответ 1

Вы должны установить опцию "Конфигурация сборки для индексатора" в "Использовать конфигурацию активной сборки" в настройках индексатора проектов C/С++. Откройте панель свойств для проекта, перейдите в c/С++ General и Indexer и включите конкретные настройки проекта и измените радиоблоков внизу на "Использовать конфигурацию активной сборки".

CDT indexer settings

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

Ответ 2

Перейдите в свой проект Properties, затем перейдите к C/С++ General- > Paths and Symbols- > Symbols. Добавьте свои определения там, и он будет работать.

Ответ 3

1) Если вы хотите изменить определения для вашей системы на основе конфигурации сборки, вам нужно сделать так, как сказал джант: "Свойства проекта и выберите" C/С++ Общие "-" Пути и символы ", затем выберите вкладку" Символы ", но вам нужно убедиться, что у вас есть правильная настройка, выбранная в верхней части окна. Также убедитесь, что при добавлении символа в список, который вы НЕ проверяете, установите флажок" Добавить ко всем конфигурациям".

2) Если вы хотите, чтобы ваш правильный набор символов обрабатывался CDT в вашем редакторе, вам также необходимо убедиться, что у вас есть правильная конфигурация сборки. Для этого щелкните правой кнопкой мыши на своем проекте и выберите "Настроить конфигурации" > "Установить Active- > " и выберите конфигурацию сборки, которую вы хотите активировать. CDT теперь будет анализировать все файлы, как если бы эта конфигурация сборки была активна, используя глобальные символы, которые вы определили на последнем шаге.

Есть проблема, которую я видел с каждой версией Eclipse, где он не всегда решает перестроить ваши индексные файлы сразу. Чтобы заставить это сделать, вы можете либо начать сборку (сборка на самом деле не требуется), либо вы можете щелкнуть правой кнопкой мыши по вашему проекту и перейти в Index- > ​​Rebuild. Оба они вызывают немедленную переиндексацию. Однако вам не нужно этого, я могу подтвердить, что простое изменение конфигурации сборки, описанное выше в шаге 2, приведет к тому, что #ifdef, который проверяет символ, определенный только в одной из моих конфигураций сборки, немедленно приводит к тому, что он становится серым или un-greyed-out, как и должно быть.

Ответ 4

Мое удовлетворительное решение состояло в том, чтобы отойти от Eclipse к редакторам с помощью рабочего плагина libclang: Sublime Text, Vim.

Для интеллектуальной среды IDE для C/С++, вероятно, не может пойти не так, как с XCode или MSVC.