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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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