Проблема завершения кода Eclipse CDT

По какой-то причине завершение кода для Eclipse CDT, которое я запускаю (в Ubuntu Linux), не работает должным образом. Каждый раз, когда я включаю библиотеку, ничего не появляется. Есть ли причина, по которой это может быть?


person zeboidlund    schedule 18.07.2011    source источник


Ответы (2)


Включение заголовка в исходный код недостаточно. Вам нужно указать индексатору, где искать заголовок. Для этого вам нужно перейти в свойства вашего проекта, перейти к элементу C/C++ General > Paths and Symbols. На вкладке Includes добавьте папку, содержащую ваши заголовки для языка GNU C++. Вам также может понадобиться определить несколько символов на вкладке Symbols, если это нужно вашей библиотеке.

Теперь вам просто нужно подождать, пока индексатор сделает свое дело, и автозаполнение должно начать работать. Имейте в виду, что индексатор не идеален, и сложные заголовки C++, такие как STL, могут довольно легко его запутать.

person Ze Blob    schedule 18.07.2011
comment
Спасибо. Сделано и сделано. Что касается определения символов, я пришел из Java, поэтому я мало что знаю об этом. Для чего именно мне нужно определить новые символы? - person zeboidlund; 19.07.2011
comment
Возможно, вам это не нужно, но некоторые заголовки могут изменить свою реализацию на основе директив препроцессора. Например, если в заголовке есть директива #ifdef FOOBAR, а индексатор не встретил эквивалентную директиву #define FOOBAR, то все, что включено в раздел #ifdef, не будет проиндексировано. Вам не нужно будет делать это очень часто, если вообще когда-либо (вероятно, не стоило упоминать об этом). - person Ze Blob; 19.07.2011
comment
Это прекрасно работает для проектов C++, но как насчет проектов Android, которые включают C/C++ в свои родные библиотеки? - person Kevin Parker; 23.08.2011
comment
@Kevin Я совсем не знаком с Android, но я предполагаю, что здесь происходит что-то вроде JNI, чтобы иметь C / C ++ в проекте Java. К сожалению, я понятия не имею, возможно ли вообще добавить настройки C++ в Java-проект. Моя совершенно случайная рекомендация состояла бы в том, чтобы разделить ваш проект на два (один для Android и один для Java). - person Ze Blob; 23.08.2011
comment
@Ze Blob - Знаете ли вы, как я мог бы получить какую-то «символическую ссылку» на файлы в проекте C++? Было бы здорово, если бы я мог просто сохранить его как проект Java и либо иметь панель настроек C++, либо файлы C++ все еще в проекте Java, но они просто каким-то образом связаны с проектом C++. - person Kevin Parker; 23.08.2011
comment
@Kevin Я немного повозился, и я думаю, что лучшим решением было бы разделить ваши файлы cpp в папку и создать новый проект CDT в этой папке (НЕ используйте корень вашего проекта Java). Это немного уродливый хак, но он выглядит так, как будто он работает и не влияет на исходный проект Java. Примите необходимые меры предосторожности (создайте резервные копии), прежде чем пытаться это сделать. Если вы работаете в системе Linux, вы также можете создать отдельную папку для своего проекта CDT и добавить символическую ссылку обратно в свои файлы C++. Я не проверял это, но не понимаю, почему это не сработает. - person Ze Blob; 24.08.2011

Может быть, потому что он не может найти заголовки. Вы должны указать пути включения в разделе «Включает» настроек вашего инструмента для проекта. Другие методы могут помешать eclipse найти заголовки, даже если gcc может их найти.

person Eelke    schedule 18.07.2011