没有宣布GCC 4.3错误:“NULL”在此范围
error: ‘NULL’ was not declared in this scope
它出现和消失编译C++时,我得到这个消息,我不知道为什么。为什么?
谢谢。
没有宣布GCC 4.3错误:“NULL”在此范围
error: ‘NULL’ was not declared in this scope
它出现和消失编译C++时,我得到这个消息,我不知道为什么。为什么?
谢谢。
NULL
不是关键字。它是一些标准头文件中定义的标识符。您可以包括
#include <cstddef>
有它的适用范围,包括一些其他的基本知识,如std::size_t
。
上帝,我非常宠坏Java(null是一个关键字),我从来没有想过NULL不会是C++中的关键字。感谢:) – 2011-10-04 19:45:28
NULL
不是关键字;这是一个0的宏替代,我相信stddef.h
或cstddef
。您没有#included
适当的头文件,因此g ++将NULL
视为常规变量名称,并且您尚未声明它。
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.
要完成其他答案:如果你是使用C++ 11,使用nullptr
,这是一个关键字,意味着一个空指针指向null。 (而不是NULL
,这不是指针类型)
您可以声明宏NULL。添加后您的#includes:
#define NULL 0
或
#ifndef NULL
#define NULL 0
#endif
否 “;”在教学和指导。
也许你没有在消息的来源范围内声明NULL? – 2009-01-20 17:08:33
您应该至少发布提供错误的完整代码。否则,通过查看错误字符串将很难分辨出发生了什么。 – Naveen 2009-01-20 17:11:44