警告:不兼容的指针类型
问题描述:
现在我有这样的:
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));
我怎样才能使这些警告消失?
答
误差是不言自明:
你isText
,Cons
和children
方法期望xml*
(一个指向xml_struct
)。您正在传递一个xml_list*
(指向xml_list_struct
的指针)。
您做出警告,通过传递正确的指针(xml*
)或通过固定的方法来接受您的指针消失(xml_list*
)
那么,什么是'的isEmpty原型()','缺点()'和'children'()?他们显然不符合你传递的论点。你需要解决这个问题。 – 2013-04-04 11:51:02
isEmpty(xml_list * elems)及其返回int。缺点(xml * hd,xml_list * tl)并返回xml_list。 children(xml * elem)并返回xml_list。 – 2013-04-04 12:06:26