错误:此范围内未声明“NULL”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误:此范围内未声明“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不能隐式转换为整数类型,因此它可以用于消除对已经为指针和整数类型重载的函数的调用:

void f(int x);
void f(void * ptr);

f(0);  // Passes int 0.
f(nullptr);  // Passes void * 0.
另一答案

NULL不是关键词;它是一个宏的替代0,我相信,它来自stddef.hcstddef。你没有#included一个合适的头文件,所以g ++认为NULL是一个常规变量名,你还没有声明它。

另一答案

要完成其他答案:如果您使用的是C ++ 11,请使用nullptr,这是一个关键字,表示指向null的void指针。 (而不是NULL,它不是指针类型)

另一答案

NULL也可以在:

#include <string.h>

String.h将从其他地方拉入NULL。

另一答案

您可以声明宏NULL。在#includes之后添加:

#define NULL 0

要么

#ifndef NULL
#define NULL 0
#endif

不“;”在说明的最后......

以上是关于错误:此范围内未声明“NULL”的主要内容,如果未能解决你的问题,请参考以下文章

我正在更换未在此范围内声明

试图返回结构指针

错误:____未在此范围内声明

错误:to_string 未在此范围内声明

代码覆盖范围内未考虑委派 Switch

C++“未在此范围内声明”编译错误及修改提示