2013-04-04 6 views
-1

После моего предыдущего 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)); 

Как я могу сделать эти предупреждения уйти ??

+0

Ну, что прототипы 'IsEmpty()', ' Cons() 'и' children'()? Они явно несовместимы с аргументами, которые вы передаете. Вам нужно это исправить. –

+0

isEmpty (xml_list * elems) и его возврат int. Минусы (xml * hd, xml_list * tl), и он возвращает xml_list. children (xml * elem), и он возвращает xml_list. –

ответ

1

Ошибка само за себя:

Ваш isText, Cons и children методы ожидают xml* (указатель на xml_struct). Вы передаете xml_list* (указатель на xml_list_struct).

Вы делаете предупреждения уходят пропусканием правильный указатель (xml*) или зафиксировав методы, чтобы принять указатель, что у вас есть (xml_list*)

Смежные вопросы