«Невозможно разрешить ...» в NetBeans 6.7.1, Linux, C ++ - PullRequest
5 голосов
/ 19 сентября 2009

Я работаю с небольшой группой над проектом C ++ в NetBeans.

По какой-то причине NetBeans сообщает о таких вещах, как "string", "endl", "cout", как "Unable to Resolve", даже если включены правильные библиотеки.

Проект компилируется и запускается, как и ожидалось, поэтому, в конце концов, это не так уж сложно, просто то, что все помечено как ошибка, делает его довольно раздражающим.

Мне не удалось найти что-либо об этой ошибке. Просто одна расплывчатая ссылка в блоге. Кто-нибудь еще испытывал это?

Очевидно, что это не очень распространено, поэтому должна быть настройка / конфигурация, которая его вызывает. Кто-нибудь знает, кому это предотвратить?

EDIT:

Нет, эти "ошибки" есть только в IDE. Код компилируется нормально и работает. Разработчик использовал «using namespace std;» поэтому не должно быть никаких проблем. Похоже, что среда IDE NetBeans содержит ошибки.

Пример кода:

#include <stdlib.h>
#include <string>
#include <iostream>

using namespace std;

int main(int argc, char** argv)
{
   string test;
   test = "Why?";

   cout << test << endl;

   return (EXIT_SUCCESS);
}

Этот код компилирует и печатает "Почему?" но "string", "cout" и "endl" помечены как ошибки в IDE. Явное использование std :: не имеет значения

Очистить Редактировать:

Для всех, кому интересно, через несколько дней у меня было 6 обновлений для NetBeans. После установки этих обновлений проблема была устранена, несмотря на то, что код не изменился. Итак, по-видимому, это была ошибка NetBeans.

Ответы [ 4 ]

1 голос
/ 15 ноября 2009

хм .. это то же самое только что случилось со мной. Однажды я запустил NetBeans, он просто подчеркивал все мои вызовы openGL (gl, glu и glut), и я не мог избавиться от ошибок. Он скомпилирован просто отлично (+ я ничего не менял в коде, так как в прошлый раз он не показывал ошибок)

После прочтения этого поста я проверил наличие обновлений, обновился, и теперь он не показывает ошибок :) это странно, потому что я регулярно обновляюсь

РЕДАКТИРОВАТЬ: nvm, теперь они снова подчеркнуты: (

0 голосов
/ 05 декабря 2010

FWIW У меня была такая же проблема с Netbeans 6.8 в Ubuntu 10.04. Разочарованно Netbeans сказал мне также, что это было актуально в меню Справка -> Проверить обновления (так как это текущая версия для Ubuntu).

Удаление Netbeans через synaptic / aptitude и загрузка вручную и установка последней версии (6.9.1) также решили эту проблему для меня. Я надеюсь, что в магазине больше нет таких гадостей ...

Теперь, когда я решил это и применил этот исправление производительности, у меня установлена ​​действительно приятная IDE с быстрым завершением кода. Жаль, что этот опыт недоступен "из коробки", я потратил немало времени и на Eclipse CDT, и на Netbeans, пытаясь заставить все работать хорошо.

0 голосов
/ 16 февраля 2010

Для всех, кто интересуется, через несколько дней у меня было 6 обновлений для NetBeans. После установки этих обновлений проблема была устранена, несмотря на то, что код не изменился. Итак, по-видимому, это была ошибка NetBeans.

0 голосов
/ 19 сентября 2009

Попробуйте std::string, std::endl, std::cout и т. Д.

Или,

using std::string;
using std::endl;
using std::cout;

в начале вашего исходного файла после включения библиотек. Возможно, ваша IDE помечает их как ошибки, но в любом случае использует стандартное пространство имен.

Вы также можете просто использовать

using namespace std;

но это, как правило, дурная привычка, поскольку она загромождает глобальное пространство имен, и в результате вы можете получить неоднозначности (стандартное пространство имен большое). Лично я просто ставлю std:: перед всем в моих небольших проектах, и using std::______ в проекте или блоках, где я использую его в более крупных.

В любом случае, именно так звучит ошибка, но (по крайней мере, по моему опыту) программа не сможет скомпилироваться, если это проблема.

По вашему редактированию:
если ошибки, которые вы получаете, исходят только из IDE, возможно, у вас они в неправильном режиме или что-то? Код, который вы разместили в своем примере, достаточно прост для C ++, и любой компилятор или IDE, желающий работать с C ++, справится с этим без проблем. Если описанные вами ошибки произошли от вашего компилятора, это означало бы, что вы либо не включили пространство имен, либо пытались скомпилировать код C ++ с помощью компилятора C - возможно, netbeans думает, что вы пишете C?

...