Як змусити ланцюжок інструментів Linux GCC Eclipse CDT вирішити стандартні заголовки бібліотеки C ++?


12

В Ubuntu 12.04 LTS я встановив плагін Eclipse CDT і відкрив новий проект привіт, щоб просто перевірити все. Коли я створював проект, я вибрав єдиний ланцюжок інструментів: "Linux GCC"

Однак коли проект створений, це говорить про це

#include<iostream>
#include<cstdlb>

є невирішеними. Таким чином, рядки з coutі endlне можуть бути використані, і їх не знайти std.

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

Як я можу #includeрозпізнати свої директиви щодо стандартних заголовків бібліотеки для підтримки коду за допомогою stdпростору імен?


Чи зберігаються ці помилки навіть після того, як ви робите Project> Build All?
Елія Каган

2
Mayne, це дурне питання, але ви створили новий проект спеціально як проект C ++, а не як проект C?
базз

Відповіді:


4

Якщо у вас був той самий випуск, що й у мене, я підозрюю, що ваш проект будується, але завершення коду / підсвічування коду не вдається? Я щойно знайшов кілька записок, які можуть бути корисними. Ось що я зробив:

  • Проект-> Властивості

  • 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

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


Ну, це не працює для мене - хоча я насправді на 64-розрядному Debian Stretch. Але я адаптував ваші пропозиції до моєї платформи.
einpoklum
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.