it-swarm.com.ru

Netbeans 7.2 показывает «Не удается разрешить идентификатор», хотя сборка прошла успешно

Я использую Netbeans IDE 7.2 с плагин C/C++ (последняя версия 1.18.1.1), и если я собираю свой проект, все хорошо, но IDE показывает мне ошибки (например, невозможно определить идентификатор ...)

У кого-нибудь еще есть эта ошибка и как я могу ее решить?

59
leon22

Вот выдержка из моего ответа на другой вопрос.

неразрешенный идентификатор

Если источник файла .cpp выглядит так

enter image description here

Нажмите правой кнопкой мыши на вашем проекте.
Проверьте C/C++ Code As...
Выполнить Reparse Project.

enter image description here

Если этого недостаточно.
Перейти к Project Properties
Заполните поле ввода Include, как описано.

enter image description here

Установите правильный путь включения.

Я надеюсь, что это может помочь вам.

102
moskito-x

TL; DR

UTF-8 С спецификацией также может вызвать проблемы.

ПРОБЛЕМА

У меня была та же самая проблема, и я пробовал множество возможных решений, но ни одно из них не сработало, пока я не выяснил источник проблемы, что было немного забавно. Я знаю, что на этот вопрос уже дан ответ, но я записываю свое решение, возможно, оно решит проблему кого-то другого, страдающего той же проблемой.

Например, я получил "Невозможно разрешить идентификатор Vector" при определении struct Vector, хотя это было правильно:

Unable to resolve identifier Vector

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

РЕШЕНИЕ

  1. Я открыл файл .cpp в Notepad ++ и увидел, что файл был закодирован обычным образом UTF-8 , что означает, что файл начинается с символа метка порядка байтов (BOM):

    Notepad++ - file encoded in UTF-8 WITH BOM

  2. Поэтому я нажал Кодировка Преобразовать в UTF-8 без спецификации :

    Notepad++: Encoding - Convert to UTF-8 without BOM

    Примечание: НЕ просто переключайтесь на "Кодировать в UTF-8 без BOM" , потому что это может испортить некоторые специальные символы ( например, символы, содержащие акценты и т. д.). Так что конвертировать это.

  3. Сохранить

  4. Проблема устранена: в NetBeans больше не сообщается об ошибках:

    NetBeans - no errors reported anymore, problem solved

    Надеюсь, это сэкономит время и кому-то еще.

9
Sk8erPeter

у меня была такая же проблема, но я узнал, что она появляется после того, как я изменил свойства-> компилятор c ++ -> строка компиляции -> дополнительные опции для -std = c ++ 11. Если изменить настройки по умолчанию, ошибка "невозможно определить идентификатор" исчезает.

9
Rafa

У меня недавно была эта ошибка с netbeans 8.0.2 на OS X, и я не мог найти ответ, что делать.

Я решил проблему, удалив плагин C/C++, и когда я снова открыл netbeans, мне предложили "исправить помощь кода".

Нажав на приглашение и запустив его, проблема была исправлена.

2
Ben Briggs

Я использую NetBeans 8.1, и та же проблема появилась, когда я начал новый проект C++. Это решило себя после запуска проекта через отладчик.

1
nikals

Мне всегда приходится переустанавливать MPLAB X, когда это происходит. Время от времени работают другие вещи, но это всегда работает.

0
Stuart

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

На этот раз это не сработало. Мой проект, который я компилировал тысячу раз, и он всегда работал, внезапно потерпел крах 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
0
EmbeddedGuy

Мы разрабатываем наш код на одном компьютере и компилируем на другом. Я получал эти отвлекающие наценки, пока не установил "Build Host" на удаленный компьютер (в контекстном меню проекта).

Я до сих пор не уверен, в чем заключалась проблема на компьютере разработчика, поскольку неразрешенные идентификаторы были из стандартной библиотеки (size_t, std::vector и т.д.), И ответы здесь, похоже, не помогли.

0
craq