我在 gcc 4.3上编译 C + + 时得到了这个消息
error: ‘NULL’ was not declared in this scope
它出现又消失,我不知道为什么,为什么?
谢谢。
NULL不是一个关键字; 它是0的一个宏替代,我相信是在 stddef.h或 cstddef中出现的。您没有 #included合适的头文件,因此 g + + 将 NULL视为常规变量名,并且您还没有声明它。
NULL
stddef.h
cstddef
#included
NULL不是关键字。它是在一些标准头中定义的标识符。您可以包括
#include <cstddef>
在范围内使用它,包括一些其他的基础知识,如 std::size_t。
std::size_t
GCC 正在向 C + + 11迈进,这可能就是为什么您现在需要包含 Cstddef以便使用 无效常量的原因。C + + 11中的首选方法是使用新的 无效关键字,自4.6版以来,这个关键字在 GCC 中实现。无效不能隐式地转换为整数类型,因此它可以用来消除对指针和整数类型都重载的函数的调用的歧义:
void f(int x); void f(void * ptr); f(0); // Passes int 0. f(nullptr); // Passes void * 0.
要完成其他答案: 如果使用 C + + 11,请使用 nullptr,这是一个关键字,表示指向 null 的 void 指针。(而不是 NULL,后者不是指针类型)
nullptr
您可以声明宏为 NULL。在您的 # include 后面添加:
#define NULL 0
或者
#ifndef NULL #define NULL 0 #endif
在说明书的最后。
NULL 也可以在:
#include <string.h>
H 将从其他地方引入 NULL。
如果仔细查看任何 std 头中的 NULL 宏:
# Definition NULL _ _ NULL
因此,基本上,您可以使用 __null关键字代替。
__null
NULL 不是关键字。它是在一些标准头中定义的标识符。您可以包括
#include <iostream>