一个关于结构体的错误

C、C++和Java语言
回复
头像
liuhello
帖子: 216
注册时间: 2007-04-24 13:44
送出感谢: 0
接收感谢: 0

一个关于结构体的错误

#1

帖子 liuhello » 2008-10-24 13:36

代码: 全选

typedef struct _StackNode {
	int val;
	_StackNode *next;
}StackNode;
我上面定义的结构体在编译的时候同不过,老是在"_StackNode *next;"这一行报错说"expected specifier-qualifier-list before ‘_StackNode’"。不知道那位大哥或大姐能帮忙解决下。
头像
HuntXu
论坛版主
帖子: 5776
注册时间: 2007-09-29 3:09
送出感谢: 0
接收感谢: 6 次

Re: 一个关于结构体的错误

#2

帖子 HuntXu » 2008-10-24 13:39

好像递归...
HUNT Unfortunately No Talent...
头像
liuhello
帖子: 216
注册时间: 2007-04-24 13:44
送出感谢: 0
接收感谢: 0

Re: 一个关于结构体的错误

#3

帖子 liuhello » 2008-10-24 13:41

HuntXu 写了:好像递归...
但是 我看数据结构的时候 书上就是这样定义的。
可是我用gcc编译的时候就是通不过
头像
cnkilior
论坛版主
帖子: 4979
注册时间: 2007-08-05 17:40
送出感谢: 0
接收感谢: 5 次

Re: 一个关于结构体的错误

#4

帖子 cnkilior » 2008-10-24 13:50

代码: 全选

struct _StackNode {
   int val;
   struct _StackNode *next;
}StackNode;
这样应该不会错吧!
头像
HuntXu
论坛版主
帖子: 5776
注册时间: 2007-09-29 3:09
送出感谢: 0
接收感谢: 6 次

Re: 一个关于结构体的错误

#5

帖子 HuntXu » 2008-10-24 13:52

你觉得编译器知道你的结构体有多大吗?

P.S.:哪本数据结构,数据结构的书一般用伪代码居多吧...
HUNT Unfortunately No Talent...
头像
liuhello
帖子: 216
注册时间: 2007-04-24 13:44
送出感谢: 0
接收感谢: 0

Re: 一个关于结构体的错误

#6

帖子 liuhello » 2008-10-24 13:58

cnkilior 写了:

代码: 全选

struct _StackNode {
   int val;
   struct _StackNode *next;
}StackNode;
这样应该不会错吧!
正解 。 谢谢拉。我特异找的几本有实现了的代码的书看的 以前学的数据结构都是用C++实现的,书本用伪代码也没什么 没想到一用C实现的时候就出问题拉。找的书都是这样实现的,不知道他们都是在那个编译器上测试通过的。呵呵。
头像
牙签儿
帖子: 509
注册时间: 2007-06-30 0:27
送出感谢: 0
接收感谢: 1 次

Re: 一个关于结构体的错误

#7

帖子 牙签儿 » 2008-10-24 14:01

刚刚在红联见到同样的问题,已经回答,你到拿去看看。http://www.linuxdiyf.com/viewarticle.php?id=112965
反对台独,反对藏独,反对孤独!
apt-get不是万能的:

代码: 全选

sudo apt-get install girlfriend
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
有一些软件包无法被安装。
下列的信息可能会对解决问题有所帮助:
下列的软件包有不能满足的依赖关系:
girlfiend: 依赖: hourse但是它将不会被安装
girlfiend: 依赖: car但是它将不会被安装
house,car: 依赖: money但是它将不会被安装
E: 无法安装的软件包
头像
cnkilior
论坛版主
帖子: 4979
注册时间: 2007-08-05 17:40
送出感谢: 0
接收感谢: 5 次

Re: 一个关于结构体的错误

#8

帖子 cnkilior » 2008-10-24 16:55

1、lz貌似你typedef也用错了,

代码: 全选

typedef{
   int val;
   anothertype *next;
}StackNode;
2、typedef只能使用已经存在的类型名称,不能使用将要定义的类型名。和struct区别一下,因为struct紧跟结构体名,所以在结构体中定义一个这个结构体的指针是可以的(貌似变量不可以),那是因为这个结构体名是已知的。但是他具体在编译过程是如何实现的没有研究过。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

Re: 一个关于结构体的错误

#9

帖子 BigSnake.NET » 2008-10-25 16:54

这个是语法问题吧..

struct 不能漏的..
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
LCL_data
帖子: 13
注册时间: 2008-10-21 12:33
送出感谢: 0
接收感谢: 0

Re: 一个关于结构体的错误

#10

帖子 LCL_data » 2008-10-26 16:47

lz的方法c++里可以,c里面试不行。
头像
自由建客
论坛版主
帖子: 13431
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64
来自: freebuilder@yeah.net
送出感谢: 12 次
接收感谢: 112 次
联系:

Re: 一个关于结构体的错误

#11

帖子 自由建客 » 2008-10-27 9:24

C++ 标准可以直接写结构体名,与类同,但 C 标准必须要 struct 前缀。
头像
wenstream
帖子: 186
注册时间: 2008-06-18 22:02
送出感谢: 0
接收感谢: 1 次

Re: 一个关于结构体的错误

#12

帖子 wenstream » 2008-10-29 22:32

4楼正解。
在结构内定义其指针作为数据成员并不会形成递归,因为指针大小编译器是可以确定的
回复

回到 “C/C++/Java”