2 u012168958 u012168958 于 2015.07.21 16:48 提问

怎么在一个结构体里调用本身结构体数组

typedef struct XML_DATA
{
struct XML_DATA DATA[10];
char MENU[10][256];
ezxml_t xml;
char *txt;
char *strAttr;
char *file;

};
XML_DATA m_data[10];

这样使用为什么会报错,应该怎么修改?
谢谢大家帮忙看看咯。

4个回答

91program
91program   Ds   Rxr 2015.07.21 17:11
已采纳

定义变量要使用:struct XML_DATA m_data[10];
要不就要改结构体的定义,增加类型,如:
typedef struct XML_DATA
{ 。。。。。。
}XML_DATA_S;
然后可以这样定义:XML_DATA_S m_data[10];

u012168958
u012168958 谢谢,是这样改,现在已经不抱错了。
2 年多之前 回复
CSDNXIAON
CSDNXIAON   2015.07.21 16:52

对一个结构体或类的数组进行排序
结构体数组
C#调用c++Dll结构体数组指针的问题
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

beibei2008qq
beibei2008qq   2015.07.21 16:57

你这样相当于一个无限循环,如果这样可以,假如你在定义一个这样的结构体变量时,会无限分配内存,所以肯定不可以。
typedef struct XML_DATA
{
struct XML_DATA **DATA;
char MENU[10][256];
ezxml_t xml;
char *txt;
char *strAttr;
char *file;
};
XML_DATA m_data[10];
只能用指针,因为指针大小固定,然后真正用到时给指针分配内存。

beibei2008qq
beibei2008qq 回复亲爱滴蛋蛋: 下面我给你回复了,你看一下,struct XML_DATA *DATA;这个应该是一维指针
2 年多之前 回复
u012168958
u012168958 1>d:\suball\subs\asia\asia_toyota\trunk\app\command.c(69): error C2143: 语法错误 : 缺少“]”(在“常量”的前面)
2 年多之前 回复
u012168958
u012168958 1>d:\suball\subs\asia\asia_toyota\trunk\app\command.c(69): error C3409: 不允许空特性块
2 年多之前 回复
u012168958
u012168958 1>d:\suball\subs\asia\asia_toyota\trunk\app\command.c(69): error C2059: 语法错误:“;”
2 年多之前 回复
u012168958
u012168958 亲,我改成指针试了,还是报错,错误信息如下: 1>d:\suball\subs\asia\asia_toyota\trunk\app\command.c(69): error C2061: 语法错误: 标识符“m_data”
2 年多之前 回复
beibei2008qq
beibei2008qq   2015.07.21 17:17

struct XML_DATA
{
struct XML_DATA **DATA;
char MENU[10][256];
ezxml_t xml;
char *txt;
char *strAttr;
char *file;
}XML_DATA_T;
XML_DATA_T m_data[10];
你typededf用错了,刚才没注意

Csdn user default icon
上传中...
上传图片
插入图片