Eclipse CDT "Символ NULL не может быть разрешен"

Я только что установил Eclipse CDT с помощью MinGW. Все переменные окружения установлены, включают в себя и т.д. Пробовали запустить мир привет, и все кажется прекрасным.

Я попробовал загрузить проект C, который у меня был на моем компьютере, кажется, все загружает все, но я получаю следующую ошибку с символом NULL:

Symbol 'NULL' could not be resolved

Любые идеи? Спасибо!

Ответ 1

NULL обычно определяется в stddef.h. Этот файл также обычно включается в stdlib.h и stdio.h.

И вы всегда можете это сделать:

#ifndef NULL
#define NULL   ((void *) 0)
#endif

Ответ 2

Как сказал Боб, я исправляю ошибку, просто восстановив индекс

  • право на проект
  • выберите "Индекс"
  • выберите "Восстановить"

Ответ 3

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

Я закрыл текущий проект, я открыл новый проект Makefile с существующим кодом, указав правильное расположение источника местоположения моего проекта. После этого я проверил: щелкните правой кнопкой мыши проект/С++ general/Пути и символы/Каталоги Gnu С++/include не пусты и содержат правильные пути моего проекта.

Затем я перестроил индекс (щелкните правой кнопкой мыши/индекс/перестроить).

Кроме того, я использую Eclipse CDT 7, а не Eclipse CDT 8, потому что CDT8 иногда дает мне компилировать ошибки из графического интерфейса, который я не мог решить, хотя makefile был в порядке.

Ответ 4

  • Причина
  • :

NULL, определенный в stddef.h, но stddef.h находится в xxx/include/linux не xxx/include

- > , хотя вы добавили MingW xxx/include, все еще не можете найти NULL

  • Решение:

добавьте свой путь MingW include/linux к вашему проекту

  • реферер

(1) пример моего xscale crosscompiler include/linux path: /opt/crosscompile/xscale/gcc-4.6.0-glibc-2.9/arm-xscale-linux-gnueabi/sysroot/usr/include/linux

added GNU C++ include linux path

(2) мое сообщение: Ubuntu Eclipse: символ NULL не может быть разрешен

Ответ 5

Я просто исправил ошибку, подобную этой, и подумал, как никто другой не нашел это решение, которое я бы опубликовал. Я обнаружил, что stdlib объявил NULL как ___need_NULL в моем компиляторе AVR GCC. Это вызвало ошибку в Eclipse IDE. Однако ошибка была вызвана тем, что Coden Analysis не обнаружил аномалию и так крыло, что символ не найден. Вы можете отключить Coden в настройках в разделе "General → Startup/Shutdown" или изменить его поведение в анализе кода C/С++.

Это может объяснить иногда случайный характер, который другие испытывают

Ответ 6

Я думаю, что вы не добавили заголовочный файл, который определяет NULL. Добавьте stdlib.h(оператор #include). он определяет NULL-макросы.

Ответ 7

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

Ответ 8

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

Ответ 9

Просто добавьте C:\MinWG\lib в пути библиотеки Eclipse.

Ответ 10

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

Ответ 11

Ничто из предложенного выше не помогло мне. Каждый раз, открывая файл, выявляется множество ошибок.

Что помогло в итоге: Закройте все файлы, затем удалите ошибки вручную (щелкните правой кнопкой мыши список ошибок в окне "Проблемы"), затем выполните перестроение индекса.

Ответ 12

Эта проблема все еще возникает в 2019 году... есть много разных причин/решений.

Я получал неразрешенные символы в редакторе для NULL и всего в stdio.h(stderr, printf и т.д.), Но компиляция работала нормально. Ничего не помогало, пока я не вошел в свойства проекта и не удалил кучу ненужных путей к C/C++. После этого переиндексация исправила проблему.

В другом случае у меня был неопределенный символ для имени класса, который был задействован в каком-то условном макросе препроцессора. Исправлена ошибка, связанная с добавлением файла заголовка, который определяет макрос, для "Индексации всех вариантов определенных заголовков" в параметрах индексатора C/C++ (после проверки "Включить настройки, специфичные для проекта).

Это показывает, что индексатор eclipse CDT может легко запутаться.