Как я могу получить Eclipse для индексации кода внутри #ifdef .... #endif - PullRequest
28 голосов
/ 26 июня 2010

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

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

Как получить затмение для индексации функции feature_a?

Ответы [ 6 ]

32 голосов
/ 27 июня 2010

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

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

3 голосов
/ 27 августа 2014

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

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

1 голос
/ 15 марта 2012

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

1) Глобальный поиск / замена #if для# JUNKif

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

3) Еще один глобальный поиск / замена #JUNKif на # if

1 голос
/ 04 марта 2011

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

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

0 голосов
/ 10 июля 2015

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

0 голосов
/ 30 сентября 2014

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...