Eclipse CDT: принудительное индексирование условно скомпилированного кода

#c #eclipse #eclipse-cdt

#c #eclipse #eclipse-cdt

Вопрос:

Наша кодовая база условно компилирует код на основе конфигураций во время компиляции. Плагин CDT в Eclipse в настоящее время не индексирует скомпилированный код, поэтому я не могу перейти к определению функции, если оно находится внутри #ifdef . Как я мог бы заставить индексирование работать?

Ответ №1:

Нельзя предполагать, что код будет компилироваться, если условия игнорируются. В этом свете эта функция не может работать (в общем случае).

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

 #ifdef FEATURE_X
    code;
#else
    other code;
#endif
  

вам придется использовать более громоздкий

 #ifdef FEATURE_X
    code;
#endif
#ifdef FEATURE_Y
    other code;
#endif
  

Таким образом, вы можете позволить индексатору работать с -DFEATURE_X -DFEATURE_Y . Однако вы не можете выполнять отладку в такой конфигурации, потому что оба блока также будут выполнены