错误:'NULL'没有在这个范围内声明

在gcc 4.3上编译C ++时,我得到这个消息

error: 'NULL' was not declared in this scope 

它出现和消失,我不知道为什么。 为什么?

谢谢。

NULL不是关键字。 这是一些标准头文件中定义的标识符。 你可以包括

 #include <cstddef> 

在范围内,包括一些其他的基础,如std::size_t

GCC正在向C ++ 11迈进,这可能是为什么你现在需要包含cstddef以便使用NULL常量。 C ++ 11中的首选方法是使用新的nullptr关键字,该关键字自4.6版以来在GCC中实现。 nullptr不能隐式转换为整型,所以它可以用来消除对已经被重载的指针和整型types的函数的调用:

 void f(int x); void f(void * ptr); f(0); // Passes int 0. f(nullptr); // Passes void * 0. 

NULL不是关键字; 这是一个macros替代为0,我相信在stddef.hcstddef 。 你没有#included一个合适的头文件,所以g ++将NULL看作一个常规的variables名,而你还没有声明它。

要完成其他的答案:如果你正在使用C ++ 11,使用nullptr ,这是一个关键字,意味着一个空指针指向null。 (而不是NULL ,这不是一个指针types)