我在gcc 4.3上编译C++时收到此消息
error: ‘NULL’ was not declared in this scope
它出现并消失,我不知道为什么.为什么?
谢谢.
NULL
不是关键字.它是一些标准头文件中定义的标识符.你可以包括
#include
把它放在范围内,包括其他一些基础知识,比如std::size_t
.
GCC正在采取措施来实现C++ 11,这可能就是为什么你现在需要包含cstddef才能使用NULL常量.C++ 11中的首选方法是使用新的nullptr关键字,该关键字从版本4.6开始在GCC中实现.nullptr不能隐式转换为整数类型,因此它可以用于消除对已经为指针和整数类型重载的函数的调用:
void f(int x); void f(void * ptr); f(0); // Passes int 0. f(nullptr); // Passes void * 0.
NULL
不是关键字; 它是一个宏的替代0,并且,stddef.h
或者cstddef
,我相信.你没有#included
一个合适的头文件,所以g ++看作NULL
是一个常规变量名,你还没有声明它.
要完成其他答案:如果使用的是C ++ 11,请使用nullptr
,这是一个关键字,它表示指向null的void指针。(而不是NULL
不是指针类型的)