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

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];

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

c c++

3个回答

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

u012168958
亲爱滴蛋蛋 谢谢,是这样改,现在已经不抱错了。
大约 5 年之前 回复

你这样相当于一个无限循环,如果这样可以,假如你在定义一个这样的结构体变量时,会无限分配内存,所以肯定不可以。
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;这个应该是一维指针
大约 5 年之前 回复
u012168958
亲爱滴蛋蛋 1>d:\suball\subs\asia\asia_toyota\trunk\app\command.c(69): error C2143: 语法错误 : 缺少“]”(在“常量”的前面)
大约 5 年之前 回复
u012168958
亲爱滴蛋蛋 1>d:\suball\subs\asia\asia_toyota\trunk\app\command.c(69): error C3409: 不允许空特性块
大约 5 年之前 回复
u012168958
亲爱滴蛋蛋 1>d:\suball\subs\asia\asia_toyota\trunk\app\command.c(69): error C2059: 语法错误:“;”
大约 5 年之前 回复
u012168958
亲爱滴蛋蛋 亲,我改成指针试了,还是报错,错误信息如下: 1>d:\suball\subs\asia\asia_toyota\trunk\app\command.c(69): error C2061: 语法错误: 标识符“m_data”
大约 5 年之前 回复

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
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐