Как заставить набор инструментов Linux GCC Eclipse CDT разрешать заголовки стандартной библиотеки C ++?

12

В Ubuntu 12.04 LTS я установил плагин Eclipse CDT и открыл новый проект hello world, чтобы просто проверить все. Когда я создавал проект, я выбрал единственный набор инструментов: «Linux GCC»

Когда проект создается, он говорит, что

#include<iostream>
#include<cstdlb>

неразрешены. Таким образом, строки с coutи endlне могут быть использованы, и он не может найти std.

using namespace std; также вызывает проблемы.

Как я могу #includeраспознать мои директивы для стандартных библиотечных заголовков для поддержки кода, использующего stdпространство имен?

Мухаммед Хан
источник
Есть ли эти ошибки сохраняются даже после того, как вы сделаете Project> Build All?
Элия ​​Каган,
2
Майн, это глупый вопрос, но вы создали новый проект именно как проект C ++, а не как проект C?
Bazz

Ответы:

4

Если у вас возникла та же проблема, что и у меня, я подозреваю, что ваш проект собирается, но завершение кода / выделение кода не удается? Я только что нашел некоторые заметки, которые могут быть полезны. Вот что я сделал:

  • Project-> Свойства

  • C / C ++ Общий

  • Пути и символы

  • выберите подходящий язык

  • Нажмите «Добавить» и добавьте каталоги, зависящие от версии компилятора.

Для языка 'GNU C ++' я добавил:

  /usr/include
  /usr/include/c++/4.6
  /usr/include/c++/4.6/bits
  /usr/include/i386-linux-gnu
  /usr/include/i386-linux-gnu/bits
  /usr/include/c++/4.6/debug
  /usr/include/c++/4.6/i686-linux-gnu
  /usr/include/c++/4.6/i686-linux-gnu/bits

Для "GNU C" я добавил:

  /usr/include
  /usr/include/i386-linux-gnu
  /usr/include/i386-linux-gnu/bits

TBH, я не думаю, что все вышеперечисленные каталоги действительно необходимы (вы могли бы удалить каталоги 'битов'), но список выше работал для меня в то время.

Сейчас я использую Eclipse Indigo (версия 3.7.2) с eclipse.org, и он автоматически находит и добавляет правильные каталоги включения. Список отличается для меня:

/usr/include/c++/4.6
/usr/include/c++/4.6/i686-linux-gnu
/usr/include/c++/4.6/backward
/usr/lib/gcc/i686-linux-gnu/4.6/include
/usr/local/include
/usr/lib/gcc/i686-linux-gnu/4.6/include-fixed
/usr/include/i386-linux-gnu
/usr/include

Ясно, что добавляйте только те каталоги включения, которые действительно существуют в вашей системе ;-)

jamesodhunt
источник
Ну, это не работает для меня - хотя я на самом деле на 64-битной Debian Stretch. Но я адаптировал ваши предложения к моей платформе.
einpoklum