与’int()’(C)的间接等级不同

这段代码给了我这个错误,我不明白。 我甚至无法运行该程序。 你能帮我解决这个错误吗? 如果您对代码中没有任何理解,请说出来。

error C2040: 'CancelarPedido' : 'ppedido (ppedido)'与’int()’的间接等级不同

 printf("\nIntroduza opcao:"); scanf("%d",&opc); switch(opc){ case 1: lista = NovoPedido(lista);break; case 2: lista = CancelarPedido(lista);break; case 3: printf("Falta implementar a funcao.");break; case 4: printf("Falta implementar a funcao.");break; } }while(opc!=5); return lista; } ppedido CancelarPedido(ppedido lista) { ppedido actual, anterior = NULL; char id[5]; actual = lista; if(lista == NULL) printf("\nNao ha pedidos na fila de espera..."); else { printf("\nIntroduza o ID do pedido que pretende cancelar: "); scanf("%s", id); while(actual != NULL && ((strcmp(actual->id, id)) != 0)){ anterior = actual; actual = actual->prox; } if(actual == NULL){ printf("\nERRO - Nao existe nenhum pedido com o ID introduzido."); return lista; } if(anterior == NULL){ lista = actual->prox; printf("\nPedido cancelado com sucesso..."); } else{ anterior->prox = actual->prox; printf("\nPedido cancelado com sucesso..."); } free(actual); return lista; } } 

在声明之前,您正在调用CancelarPedido。 您需要重新排序代码或为CancelarPedido添加前向声明。

如果没有在范围内声明CancelarPedido,则默认为int CancelarPedido()。 您收到错误消息,因为lista被声明为指针,但CancelarPedido被声明为返回int。