我在C ++中定义了一个链表。 我试图将变量头(在Movie_LinkedList
构造函数中)设置为NULL值,但是我得到了以下错误:
movie.h(40):错误C2065:'NULL':未声明的标识符
请注意,我不能包含除之外的任何库
非常感谢您提供的任何帮助!
代码中使用的NULL
在程序中未定义。通常情况下,它定义在一个标准头文件中,具体来说是<cstddef>
或<stddef.h>
。由于你只能使用iostream
,如果该头文件没有隐式地包含NULL
,你可以使用0
或者在C++11中使用nullptr
,后者是一个关键字,不需要头文件。(不建议自己定义NULL
。尽管有时可能会起作用,但这在技术上是非法的。)
NULL
的方法是包含定义它的标准头文件之一。 - James KanzeNULL
是非法的(至少如果你包含任何标准头文件)。 - James Kanze你应该包含<stddef.h>
或<cstddef>
。
但你也可以使用 0
或 nullptr
。
nullptr
只适用于 c++11。 - Nickint* p = 0;
,这很常见。 - metalint *p = 0x1
- 不过编译器说可以赋值为0但不是1。 - Aniket IngeNULL
被定义为什么的原因? - James Kanze#include <stddef.h>
NULL
。 - James Kanze无需使用任何库!
在头文件的顶部,
执行以下操作:
#ifndef NULL
#define NULL (0)
#endif
NULL
一直是0
。由于某种未知的原因,C标准委员会决定“允许”使用另一种形式,但它不属于K&R C,也肯定不是传统的形式。 - James Kanze#define
或#undef
在任何标准库头文件中声明的名称。” - James KanzeNULL
实际上不是C或C++语言的核心部分;它在stddef.h中被定义为0。
因为你正在使用C ++,所以最好使用nullptr
,它是一个关键字,并且有类型。(假设它可用。它是C++11的一部分,因此并非所有编译器都支持它;实际上,你很难找到一个不支持它的编译器)
NULL
没有被定义。要么定义它,要么将head = 0
。 - Nick