"Не удается разрешить..." в NetBeans 6.7.1, Linux, C++
Я работаю с небольшой группой над проектом C++ в NetBeans.
По какой-то причине NetBeans сообщает о таких вещах, как "string", "endl", "cout", как "Unable to Resolve", даже если включены правильные библиотеки.
Проект компилируется и запускается, как и ожидалось, поэтому, в конце концов, это не так уж и сложно, просто то, что все помечено как ошибка, делает его довольно раздражающим.
Я не смог найти ничего об этой ошибке. Просто одна расплывчатая ссылка в блоге. Кто-нибудь еще испытывал это?
Очевидно, что он не очень распространен, поэтому должна быть настройка / конфигурация, которая его вызывает. Кто-нибудь знает, кто не допустит этого?
РЕДАКТИРОВАТЬ:
Нет, эти "ошибки" есть только в 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 ответа
Для всех, кто заинтересовался, через несколько дней у меня было 6 обновлений для NetBeans. После установки этих обновлений проблема была устранена, несмотря на то, что код не изменился. Итак, по-видимому, это была ошибка NetBeans.
Хм.. это то же самое только что случилось со мной. Однажды я запустил NetBeans, он просто подчеркивал все мои вызовы openGL (gl, glu и glut), и я не мог избавиться от ошибок. Он скомпилирован очень хорошо (+ я ничего не менял в коде, так как в прошлый раз он не показывал ошибок)
После прочтения этого поста я проверил наличие обновлений, обновился, и теперь он показывает отсутствие ошибок:) это странно, потому что я регулярно обновляюсь..
РЕДАКТИРОВАТЬ: НВМ, теперь они снова подчеркнуты:(
У меня была такая же проблема с Netbeans 6.8 в Ubuntu 10.04. Разочарованно Netbeans сказал мне также, что это было актуально в меню "Справка -> Проверка обновлений" (так как это текущая версия для Ubuntu).
Удаление Netbeans через synaptic/aptitude и загрузка вручную и установка последней версии (6.9.1) также решили проблему для меня. Я надеюсь, что в магазине больше нет таких гадостей...
Теперь, когда я решил эту проблему и применил этот патч производительности, у меня установлена действительно приятная IDE с быстрым завершением кода. Жаль, что этот опыт недоступен "из коробки", я потратил немало времени как на Eclipse CDT, так и на Netbeans, пытаясь заставить все работать хорошо.
Пытаться 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?