Eclipse 3.7 не может разрешать типы в редакторе C++

Недавно я перешел с 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 вопроса:

  1. В свойствах проекта раздел Paths and Symbolsсоответствует включенным путям из раздела C++ Build/Settings/C++ Includes. Это означает, что добавление/удаление пути в одном из этих разделов напрямую влияет на ввод других. Поскольку C++ Includesнапрямую связывается с компилятором, мне интересно, почему компилятор может корректно скомпилировать (и находит заголовки ), даже если они не переданы ему как путь? Есть ли какой-то стандартный путь, который использует GCC, о котором я не знаю?

  2. Почему он не находит printfв затмении? Заголовочный файл stdio.hвключен, а также содержит объявление printf-. так почему редактор кода Eclipse сообщает мне, что не может решить эту проблему?

  3. Почему заголовочные файлы так разделены? Я знаю, что мне нужны другие заголовочные файлы, если я строю для другого целевого объекта (, например. PowerPC)-Но почему GNU GCC разделяет эти заголовки по разным каталогам?

7
задан Toby 11 July 2012 в 12:23
поделиться