При синтаксическом анализе источников Си Eclipse, похоже, игнорирует #include в отношении определенных макросов. Это плохо, когда дело доходит до выделения, а иногда и автоматического завершения. В качестве примера предположим следующие два заголовочных файла:
bar.h:
#define BAZ 1
foo.h:
#include "bar.h" //<-- Jumping from here leads to the correct file
#ifdef BAZ
int baz() { //
return BAZ; // this section will be grayed out
} //
#else
int baz() {
return 42;
}
#endif
int foo() {
return baz(); // jumping from here will go to the second(42) function
}
До сих пор я пытался изменить параметры / профиль Discovery для проекта, а также перейти к «Использовать активную конфигурацию сборки» для индексатора в общих настройках.
Проект является относительно небольшим (но пронизанным макросами) проектом C / C ++ с использованием внешнего компоновщика (autotools / make).
Дополнительные примечания:
Я выяснил, что отчасти проблема заключается в том, что я ссылался на файлы заголовков из другого проекта, которые были установлены в отдельный каталог с помощью файлов Makefiles. Я переключил каталог include из установленного в каталог внутреннего / include проекта. Теперь, когда я собираю другой проект, кажется, что он разрешает макросы в этих заголовочных файлах. Это не совсем красиво, но мне это нравится.