当我试图打印出这个列表时得到的错误是一个不兼容的类型错误。我尝试将其转换为结构宏、静态结构宏、指针,但都不起作用。
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
而 macro_list.next
是一个 struct macro*
。更改为:
struct macro* p = ¯o_list;
while(p != NULL){
printf("%s %s\n",p->macro_name,p->macro_body);
p = p->next;
}
我进行了以下额外更改:
macro_list.next
到p->next
,否则它永远不会超过列表中的第二项。- 将
while
中的条件更改为p != NULL
,否则它不会在检查p- 时处理列表中的最后一个元素>next != NULL
关于c - 尝试分配不兼容的类型时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9625147/