Недавно я перешел с Eclipse 3.6 на Eclipse 3.7, который использую для разработки на C++ в Ubuntu 11.04.
С версией 3.6 у меня не было больших проблем, за исключением того, что у меня всегда были проблемы с индексатором. Теперь с версии 3.7 он начинает помечать неразрешенные типы как ошибки. Поскольку индексатор, кажется, не любит меня еще больше, мой Eclipse, по-видимому, не знает таких типов, как uint16_t
или size_t
.
В отличие от отображаемых ошибок в редакторе кода, у моего компилятора нет проблем с компиляцией кода и разрешением всех символов и типов, так что это похоже на проблему самой IDE.
Есть ли способы избежать такого поведения, потому что все красные подчеркивания делают мой код все более и более нечитаемым...?
Обновление:
Хорошо, после некоторых исследований и ответа Денниса я обнаружил, что мне нужно добавить несколько путей кProject Properties/ C/C++ General/ Paths and Symbols
Поскольку я строю для PowerPC, а не для цели I32, я не могу просто добавить /usr/include
. Вместо этого мне нужно было добавить
/usr/powerpc-linux-gnu/libc/usr/include
для всех стандартных заголовков (, напримерstdint.h
). Также мне нужно:
/usr/lib/gcc/powerpc-linux-gnu/4.5.1/include
для stdarg.h
.
Сейчас почти все ошибки ушли.Единственная функция, которая меня все еще беспокоит, это printf
из шапки stdio.h
. Я посмотрел, и сам заголовочный файл находится в пределах включенных путей. Тем не менее я получаю сообщение об ошибке Function printf could not be resolved
. Еще раз хочу отметить, что это всего лишь ошибки, которые выдает Eclipse -. Сама компиляция работает нормально.
Так что на самом деле возникает 3 вопроса:
В свойствах проекта раздел Paths and Symbols
соответствует включенным путям из раздела C++ Build/Settings/C++ Includes
. Это означает, что добавление/удаление пути в одном из этих разделов напрямую влияет на ввод других. Поскольку C++ Includes
напрямую связывается с компилятором, мне интересно, почему компилятор может корректно скомпилировать (и находит заголовки ), даже если они не переданы ему как путь? Есть ли какой-то стандартный путь, который использует GCC, о котором я не знаю?
Почему он не находит printf
в затмении? Заголовочный файл stdio.h
включен, а также содержит объявление printf
-. так почему редактор кода Eclipse сообщает мне, что не может решить эту проблему?
Почему заголовочные файлы так разделены? Я знаю, что мне нужны другие заголовочные файлы, если я строю для другого целевого объекта (, например. PowerPC)-Но почему GNU GCC разделяет эти заголовки по разным каталогам?