error C2065: “NULL”: 未声明的标识符

qq_27887201 2015-05-10 11:14:41
求教求教
个人实现代码如下
#ifndef LINKLIST_H
#define LINKLIST_H

typedef void Linklist ;

typedef struct tag_LinklistNode
{
tag_LinklistNode* next ;
}LinklistNode;

typedef struct tag_ListHead
{
LinklistNode node ;
int length ;
}ListHead ;

class list{
private:
ListHead head ;
public:
list()
{
head.length = 0 ;
(head.node).next = NULL ; //这个地方不被识别
}
list(list& )
{}
~list()
{
LinklistNode* temp = NULL ; //这里也不行
while( (head.node).next != NULL)
{
temp = (head.node).next ;
(head.node).next = ((head.node).next)->next ;
delete temp ;
}
}
//结点插入
int list_Insert(int pos ) ;
//整个list删除
bool list_Destroy();
//list遍历
bool list_Trval();
//结点删除
bool list_Destry(int pos);
//获取位置结点
bool list_Get(int pos,Linklist* pNode);
//获取list长度
int list_Length() ;

};

#endif
...全文
4407 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
GHXN_2014 2016-10-31
  • 打赏
  • 举报
回复
加头文件#include<cstdlib>
玻璃心orz 2016-05-24
  • 打赏
  • 举报
回复

我都包括了,为什么还是说

求大神指导
ytfhwfnh 2015-05-13
  • 打赏
  • 举报
回复
把NULL直接改成0更安逸,
ytfhwfnh 2015-05-12
  • 打赏
  • 举报
回复
引用 8 楼 yangyunzhao 的回复:
[quote=引用 1 楼 ytfhwfnh 的回复:] #ifndef NULL #define NULL 0 #endif
乱说 应该包含头文件![/quote] 如果仅仅是缺少NULL的定义,按我的方式不是更简单么?过多的依赖,增加移植的复杂性。
yangyunzhao 2015-05-12
  • 打赏
  • 举报
回复
引用 11 楼 qq_27887201 的回复:
[quote=引用 2 楼 paschen 的回复:] 把NULL换成nullptr
我这个仅仅是一个.h文件的实现代码,如果加入 #include<iostream> using namespace std; 降低了后面调用过程中复杂度,容易出现 头文件重载问题。 上面有一个老师说了 把 null 改成 nullptr 就行了 仔细搜索了一些资料,上面说 nullptr 是最新版c++标准新加的关键字,各个编译器怎么设别?这里也没有加头文件,就这个地方不懂了,求解啊 [/quote] 明明有人回复了stdio.h,你非要iostream + using,也没有办法 此外,没有听说过因为多次包含标准库的头文件而出现所谓的“头文件重载”
qq_27887201 2015-05-12
  • 打赏
  • 举报
回复
引用 2 楼 paschen 的回复:
把NULL换成nullptr
我这个仅仅是一个.h文件的实现代码,如果加入 #include<iostream> using namespace std; 降低了后面调用过程中复杂度,容易出现 头文件重载问题。 上面有一个老师说了 把 null 改成 nullptr 就行了 仔细搜索了一些资料,上面说 nullptr 是最新版c++标准新加的关键字,各个编译器怎么设别?这里也没有加头文件,就这个地方不懂了,求解啊
yangyunzhao 2015-05-12
  • 打赏
  • 举报
回复
引用 9 楼 ytfhwfnh 的回复:
[quote=引用 8 楼 yangyunzhao 的回复:] [quote=引用 1 楼 ytfhwfnh 的回复:] #ifndef NULL #define NULL 0 #endif
乱说 应该包含头文件![/quote] 如果仅仅是缺少NULL的定义,按我的方式不是更简单么?过多的依赖,增加移植的复杂性。[/quote] 1、包含的文件是标准库头文件,理论上C编译器必须支持的,不会引起移植问题。 2、NULL 不一定为0,反而是你的定义可能带来移植问题。NULL从语义角度而言和0没有任何关系,代码里面用的应该是Null pointer含义。
yangyunzhao 2015-05-11
  • 打赏
  • 举报
回复
引用 1 楼 ytfhwfnh 的回复:
#ifndef NULL #define NULL 0 #endif
乱说 应该包含头文件!
ytfhwfnh 2015-05-10
  • 打赏
  • 举报
回复
#ifndef NULL #define NULL 0 #endif
Chr1sGardn3r@10 2015-05-10
  • 打赏
  • 举报
回复
没头文件 要包括 #incluce<iostream> 或者 #include<stdlib>
mxway 2015-05-10
  • 打赏
  • 举报
回复
加 #include<stdio.h>
苏叔叔 2015-05-10
  • 打赏
  • 举报
回复
没问题
ytfhwfnh 2015-05-10
  • 打赏
  • 举报
回复
引用 3 楼 qq_27887201 的回复:
请问这个原理是什么啊?谢谢啦
缺少头文件
qq_27887201 2015-05-10
  • 打赏
  • 举报
回复
请问这个原理是什么啊?谢谢啦
paschen 版主 2015-05-10
  • 打赏
  • 举报
回复
把NULL换成nullptr

65,184

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧