Netbeans 7.2 показывает "Невозможно разрешить идентификатор", хотя сборка выполнена успешно
Я использую Netbeans IDE 7.2 с плагином C/С++ (последняя версия 1.18.1.1) и
если я строю свой проект, все в порядке, но IDE показывает мне ошибки (например, не удается разрешить идентификатор...)
У кого-нибудь еще есть эта ошибка и как я могу ее решить?
Ответы
Ответ 1
Вот отрывок из моего ответа на другой вопрос.
Неразрешенный идентификатор
Если источник .cpp файла выглядит так:
![enter image description here]()
Нажмите правой кнопкой мыши в своем проекте.
Проверьте C/C++ Code As...
Запустите Reparse Project.
![enter image description here]()
Если этого недостаточно.
Перейдите к Project Properties
Заполните поле ввода Include
, как описано.
![enter image description here]()
Установите правильный путь включения.
Я надеюсь, что это может вам помочь.
Ответ 2
TL; DR
Спецификация UTF-8 WITH также может вызвать проблемы.
ПРОБЛЕМА
У меня была одна и та же проблема, и я попробовал множество возможных решений, но никто из них не работал, пока не выяснил источник проблемы, что было немного смешно. Я знаю, что на этот вопрос уже был дан ответ, но я записываю свое решение, возможно, оно решит проблему другого, страдающего от той же проблемы.
Например, я получил "Невозможно разрешить идентификатор Vector" при определении struct Vector
, хотя это было правильно:
![Unable to resolve identifier Vector]()
У меня появилось много ошибок, подобных этому при объявлении/определении функций и т.д. Кроме того, моя помощь по коду не работала из-за количества ошибок.
Решение
-
Я открыл файл .cpp
в Notepad ++ и увидел, что файл был закодирован в обычном режиме UTF-8, что означает, что файл начинается с символа byte order (BOM):
![Notepad++ - file encoded in UTF-8 WITH BOM]()
-
Итак, я нажал Encoding → Преобразовать в UTF-8 без спецификации:
![Notepad++: Encoding - Convert to UTF-8 without BOM]()
Примечание. Не используйте только "Кодировать в UTF-8 без спецификации", потому что это может испортить некоторые специальные символы (например, символы, содержащие акценты и т.д.). Поэтому преобразуйте его.
-
Сохранить
-
Проблема исчезла: в NetBeans больше не сообщается об ошибках:
![NetBeans - no errors reported anymore, problem solved]()
Надеюсь, это тоже поможет кому-то еще.
Ответ 3
У меня была та же проблема, но я узнал, что она появляется после того, как я изменил свойства → С++ compiler → Линия компиляции → дополнительные параметры для -std = С++ 11. если изменить настройки по умолчанию, ошибка "неспособность разрешить идентификатор" исчезает.
Ответ 4
Недавно я получил эту ошибку с netbeans 8.0.2 на OS X и не смог найти ответ, что делать.
Я решил проблему, удалив подключаемый модуль C/С++, когда я снова открыл netbeans, и это побудило меня "исправить помощь с помощью кода...".
Щелкнув подсказку и разрешив запустить эту проблему, была исправлена.
Ответ 5
Мы разрабатываем наш код на одном компьютере и компилируем его на другом. Я получал эти отвлекающие разметки, пока не "установил сборку хоста" на удаленный компьютер (в контекстном меню для проекта).
Я все еще не уверен, что проблема на компьютере разработки, поскольку нерешенные идентификаторы были вещами из стандартной библиотеки (size_t
, std::vector
и т.д.), и ответы здесь, похоже, не помогли.
Ответ 6
попробовать
Щелкните правой кнопкой мыши файл,
Свойства- > Общие- > Исключить из помощи кода (отключить)
Ответ 7
Шахта работала, как только я переименовал my main.c в main.cpp.
Основываясь на расширении файла, поведение изменения кода Netbeans Code
Ответ 8
У меня часто возникает эта ошибка, и, как упоминалось выше, обычно я добавляю символ пробела, сохраняю файл, удаляю символ пробела... и все идентификаторы решаются.
На этот раз это не сработало. Мой проект, который я скомпилировал тысячу раз, и он всегда работал, внезапно разбил MPLAB X IDE v3.35 (Mac OSX, но, вероятно, это не имеет значения) при наборе текста. После этого у меня есть только один файл и только для одной структуры, все идентификаторы не разрешены.
Структура в файле profile.h была:
typedef struct
{
int state; ///< state machine current state
int enabled; ///< machine can be ENABLED or DISABLED
int flag; ///< to initiate profile execution
... many variables here ...
unsigned long timestamp; ///< variable used for local timing
} profile_struct;
В моем файле profile.c любые переменные из этой структуры стали неразрешенными, но проект скомпилирован и работал нормально.
После неудачного часа попыток это решило мою проблему: Удалил весь каталог кеша MPLABX.
В моем случае он находится по адресу:
/Users/USER_NAME/Library/Caches/mplab_ide/dev/v3.35/var
(необходимо удалить весь каталог "var" и, конечно же, заменить USER_NAME на ваше имя пользователя)
Обратите внимание, что "Библиотека" является скрытым каталогом, но вы можете получить к ней доступ, если вы включите просмотр скрытых файлов или перейдете к нему через терминал.
Наконец, на вашем компьютере это может быть где-то еще. Я нашел свое, наблюдая, какие файлы были изменены на моем компьютере за последние 2 минуты, используя команду терминала:
/usr/bin/find /Users/USER_NAME/ -mmin -2 –ls
Ответ 9
Мне всегда нужно переустанавливать MPLAB X, когда это происходит. Другие вещи работают время от времени, но это всегда работает.
Ответ 10
Я использую NetBeans 8.1, и эта же проблема возникла, когда я начал новый проект на С++. Он решил сам после запуска проекта через отладчик.