Я получаю это сообщение при компиляции С++ на gcc 4.3
error: ‘NULL’ was not declared in this scope
Он появляется и исчезает, и я не знаю, почему. Почему?
Спасибо.
Ответ 1
NULL не является ключевым словом. Это идентификатор, определенный в некоторых стандартных заголовках. Вы можете включить
#include <cstddef>
Чтобы иметь его в области видимости, включая некоторые другие основы, например std::size_t.
Ответ 2
GCC предпринимает шаги к С++ 11, поэтому, вероятно, вам нужно включить cstddef для использования константы NULL. Предпочтительным способом в С++ 11 является использование нового ключевого слова nullptr, которое реализовано в GCC с версии 4.6. nullptr неявно конвертируется в интегральные типы, поэтому его можно использовать для устранения неоднозначности вызова функции, которая была перегружена как для указателя, так и для интегральных типов:
NULL не является ключевым словом; это макроподстановка для 0 и, кажется, входит в stddef.h или cstddef. У вас нет #included соответствующего заголовочного файла, поэтому g++ видит NULL в качестве обычного имени переменной, и вы еще не объявили его.
Ответ 4
Чтобы выполнить другие ответы: Если вы используете С++ 11, используйте nullptr, который является ключевым словом, которое означает указатель на void, указывающий на null. (вместо NULL, который не является типом указателя)