Не удается разрешить в NetBeans 6.7.1, Linux, C++

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

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

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

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

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

ИЗМЕНИТЬ:

Нет, эти "ошибки" исключительно в IDE. Код компилируется нормально и работает. Разработчик использовал «используя пространство имен 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.


person Dan McGrath    schedule 19.09.2009    source источник
comment
Вы видите эти проблемы в IDE во время редактирования кода или на этапе компиляции?   -  person Timo Geusch    schedule 19.09.2009
comment
Только в IDE во время кодирования. Все компилируется И работает без ошибок и предупреждений. Это полностью верный код, NetBeans просто не согласен   -  person Dan McGrath    schedule 19.09.2009
comment
Вы должны включать <cstdlib> вместо <stdlib.h>, когда пишете С++. cstdlib, среди прочего, будет использовать пространства имен в C++.   -  person Carson Myers    schedule 19.09.2009
comment
Не имеет значения для ошибки IDE.   -  person Dan McGrath    schedule 20.09.2009


Ответы (4)


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

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

EDIT: nvm, теперь они снова подчеркнуты :(

person David    schedule 15.11.2009

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

Or,

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

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

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

using namespace std;

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

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

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

person Carson Myers    schedule 19.09.2009
comment
Поскольку программа не должна компилироваться, если это проблема. Пожалуйста, посмотрите из фактического вопроса следующую цитату: Проект компилируется и работает, как и ожидалось. Спасибо за попытку помочь. - person Dan McGrath; 19.09.2009
comment
Не может быть и этого. Он распознает классы, которые мы пишем правильно, а также передаем по ссылке. Я не могу придумать какой-либо языковой режим, который мог бы быть там, где это было бы хорошо, а строка - нет. - person Dan McGrath; 20.09.2009
comment
странный. Я ничего не могу придумать - person Carson Myers; 20.09.2009

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

person Dan McGrath    schedule 16.02.2010
comment
У меня тоже есть эта проблема. У меня нетбинс 7.1. Но в Windows 7. Все равно не работает. Код работает нормально. Но появляются ошибки. вот моя проблема - person prime; 05.01.2014

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

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

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

person Bryji    schedule 05.12.2010