C 尝试分配不兼容类型时出错
尝试打印此列表时出现的错误是不兼容的类型错误。我尝试将它转换为结构宏、静态结构宏、指针,但都不起作用C 尝试分配不兼容类型时出错,c,types,variable-assignment,incompatibility,C,Types,Variable Assignment,Incompatibility,尝试打印此列表时出现的错误是不兼容的类型错误。我尝试将它转换为结构宏、静态结构宏、指针,但都不起作用 struct macro { struct macro *next; char * macro_name; char * macro_body; }; static struct macro macro_list = { .next = NULL, .macro_name = NULL, .macro_body = NULL }; //----------------
struct macro {
struct macro *next;
char * macro_name;
char * macro_body;
};
static struct macro macro_list = {
.next = NULL,
.macro_name = NULL,
.macro_body = NULL
};
//--------------------------------------------------------------------------------
void macro_list_print(void){
printf("Printing macro_list\n");
if(macro_list.next == NULL){
printf("--No macros\n");
}
struct macro p = macro_list;
while(p.next != NULL){
printf("%s %s\n",p.macro_name,p.macro_body);
p = macro_list.next; //This line gives me the error.
}
}
我不知道该怎么办。任何帮助都可以,谢谢
p
是一个struct宏
,而macro\u列表。下一个是一个struct宏*
。改为:
struct macro* p = ¯o_list;
while(p != NULL){
printf("%s %s\n",p->macro_name,p->macro_body);
p = p->next;
}
我做了以下额外更改:
macro\u list.next
到p->next
,否则它将永远无法通过列表中的第二项
- 将
中的条件更改为p!=NULL,否则在检查p->next!=空
p
是一个struct宏
,而macro\u列表。下一个是一个struct宏*
。改为:
struct macro* p = ¯o_list;
while(p != NULL){
printf("%s %s\n",p->macro_name,p->macro_body);
p = p->next;
}
我做了以下额外更改:
macro\u list.next
到p->next
,否则它将永远无法通过列表中的第二项
- 将
中的条件更改为p!=NULL,否则在检查p->next!=空
p为宏类型
,但宏列表。下一个为宏类型*
我没有将宏列表定义为struct宏
(名称和正文为空),而是将其定义为struct宏*
此外,当您浏览列表时,您需要p=p->next
以转到列表中的下一项。实际上,您总是分配宏\u列表。下一步
,因此您将重复查看列表中的第一项
要浏览这样的链接列表,我通常会使用:
struct macro *macro_list = NULL;
for (p=macro_list; p!= NULL; p=p->next)
printf("%s %s\n", p->macro_name, p->macro_body);
p的类型为macro
,但macro\u list的类型为macro*
我没有将宏列表定义为struct宏
(名称和正文为空),而是将其定义为struct宏*
此外,当您浏览列表时,您需要p=p->next
以转到列表中的下一项。实际上,您总是分配宏\u列表。下一步
,因此您将重复查看列表中的第一项
要浏览这样的链接列表,我通常会使用:
struct macro *macro_list = NULL;
for (p=macro_list; p!= NULL; p=p->next)
printf("%s %s\n", p->macro_name, p->macro_body);
我假设next是一个指针,所以:
void macro_list_print(void){
printf("Printing macro_list\n");
if(macro_list.next == NULL){
printf("--No macros\n");
}
struct macro* p = ¯o_list;
while(p->next != NULL){
printf("%s %s\n",p->macro_name,p->macro_body);
p = macro_list.next;
}
}
我假设next是一个指针,所以:
void macro_list_print(void){
printf("Printing macro_list\n");
if(macro_list.next == NULL){
printf("--No macros\n");
}
struct macro* p = ¯o_list;
while(p->next != NULL){
printf("%s %s\n",p->macro_name,p->macro_body);
p = macro_list.next;
}
}
请包括您收到的错误。请包括您收到的错误。