Подтвердить что ты не робот

Как я могу заставить Eclipse индексировать код внутри #ifdef.... #endif

Я использую eclipse для работы с некоторым c-кодом, и он не индексирует код внутри блоков условной компиляции:

#ifdef USE_FEATURE_A
int feature_a(...) {
   some = code(here);
}
#endif

Как я могу заставить eclipse индексировать функцию feature_a?

4b9b3361

Ответ 1

Вы можете сказать, что затмение определено USE_FEATURE_A. Откройте свойства проекта и перейдите на страницу "C/С++ General- > Paths and Symbols", на вкладке "Symbols" нажмите кнопку "Добавить" и поместите USE_FEATURE_A в имя feild и нажмите "ОК".

Примечание. Это приведет к тому, что он не будет индексировать какие-либо стороны #else для вашего материала препроцессора... так что, если они не похожи на тот, о котором вы спрашиваете, вы не можете AFAIK, но если это они, вы добры. (Eclipse содержит препроцессор C, который он использует для анализа вашего кода, все перечисленные выше вещи по существу совпадают с добавлением -DUSE_FEATURE_A в вашу командную строку, поэтому препроцессор Eclipse будет вести себя иначе, чем в вашем компиляторе).

Ответ 2

Это проще и, на мой взгляд, более элегантное решение для выбранного в качестве решения:

Если у кого-то есть такая же проблема (как и у меня), это можно (сейчас?) легко решить, перейдя в Window- > Preference- > C/С++/Indexer и включить "Укажите все варианты заголовков" . Затем нажмите Project- > C/С++ Indexer- > rebuild и очистить и построить свой проект. Это должно устранить все ошибки, возникающие из команд препроцессора.

Ответ 3

Для того, что стоит, получить затмение для разбора условно скомпилированного кода гораздо сложнее, чем на первый взгляд. Я нашел документ от IBM с 2007 года, где они заявили, что будут уделять первоочередное внимание "следующей версии".

Обработка условной компиляции в ядре CDT

Ответ 4

У меня была такая же проблема, но код, условно исключенный с помощью предварительной обработки, был совершенно верным c-кодом, и я хотел отформатировать его... Это было мое решение:

1) Глобальная нахождение/замена #if на #JUNKif

2) Ctrl-Shift-F для переформатирования источника

3) Еще одна глобальная находка/замена #JUNKif на #if

Ответ 5

Один способ индексирования кода под флагом в Eclipse (Kepler) c/С++ Editor.

Вы можете включить флаги компиляции в редакторе Eclipse, чтобы индексы могли индексироваться.

Свойствa > Препроцессор Включить пути > CDT Пользовательские настройки Записи

Нажмите ADD и добавьте макрос препроцессора, и вы можете указать его значение.

Ответ 6

Лучший способ, по-моему, использовать параметр Indexer: Project Properties > C/С++ General > Indexer. Вы можете выбрать "Включить специальные настройки проекта" Я предпочитаю выбирать "Использовать активную конфигурацию сборки", чтобы индексировать все файлы, которые на самом деле построены в проекте. В любом случае вы также можете индексировать все файлы в проекте, даже если они не включены в сборку...