警告:不兼容的指针类型

问题描述:

继我以前question:警告:不兼容的指针类型

现在我有这样的:

xml_list *text1(xml_list *); 
xml_list *text(xml_list *); 

//operation: text1(elem) 
xml_list *text1(xml_list *elem){ 
    if(isText(elem)){ 
    return Cons(elem,Nil()); 
    } 
    else{ 
    return text(childeren(elem)); 
    } 
} 

//operation: text(elem) 
xml_list *text(xml_list *elem){ 
    if(isEmpty(elem)){ 
    return Nil(); 
    } 
    return append(text1(head(elem)),text(tail(elem))); 
} 

当我运行此我得到这样的警告对xml_list *文本1:

incompatible pointer types passing 'xml_list *' (aka 'struct xml_list_struct *') to parameter of type 'xml *' (aka 'struct xml_struct *') [-Wincompatible-pointer-types] 
if(isText(elem)){ 

也是这警告下一行:

warning: incompatible pointer types passing 'xml_list *' (aka 'struct xml_list_struct *') to parameter of type 'xml *' (aka 'struct xml_struct *') [-Wincompatible-pointer-types] 
return Cons(elem,Nil()); 

又一个警告:

warning: incompatible pointer types passing 'xml_list *' (aka 'struct xml_list_struct *') to parameter of type 'xml *' (aka 'struct xml_struct *') [-Wincompatible-pointer-types] 
return text(children(elem)); 

我怎样才能使这些警告消失?

+0

那么,什么是'的isEmpty原型()','缺点()'和'children'()?他们显然不符合你传递的论点。你需要解决这个问题。 – 2013-04-04 11:51:02

+0

isEmpty(xml_list * elems)及其返回int。缺点(xml * hd,xml_list * tl)并返回xml_list。 children(xml * elem)并返回xml_list。 – 2013-04-04 12:06:26

误差是不言自明:

isTextConschildren方法期望xml*(一个指向xml_struct)。您正在传递一个xml_list*(指向xml_list_struct的指针)。

您做出警告,通过传递正确的指针(xml*)或通过固定的方法来接受您的指针消失(xml_list*