Error: "NULL не был объявлен в этой области
Я получаю это сообщение при компиляции С++ на 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 неявно конвертируется в интегральные типы, поэтому его можно использовать для устранения неоднозначности вызова функции, которая была перегружена как для указателя, так и для интегральных типов:
void f(int x);
void f(void * ptr);
f(0); // Passes int 0.
f(nullptr); // Passes void * 0.
Ответ 3
NULL
не является ключевым словом; это макроподстановка для 0 и, кажется, входит в stddef.h
или cstddef
. У вас нет #included
соответствующего заголовочного файла, поэтому g++ видит NULL
в качестве обычного имени переменной, и вы еще не объявили его.
Ответ 4
Чтобы выполнить другие ответы: Если вы используете С++ 11, используйте nullptr
, который является ключевым словом, которое означает указатель на void, указывающий на null. (вместо NULL
, который не является типом указателя)