После моего предыдущего 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 * text1:
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));
Как я могу сделать эти предупреждения уйти ??
Ну, что прототипы 'IsEmpty()', ' Cons() 'и' children'()? Они явно несовместимы с аргументами, которые вы передаете. Вам нужно это исправить. –
isEmpty (xml_list * elems) и его возврат int. Минусы (xml * hd, xml_list * tl), и он возвращает xml_list. children (xml * elem), и он возвращает xml_list. –