2012-06-23 40 views
4

這段代碼給了我這個錯誤,我不明白。我甚至無法運行該程序。你能幫我解決這個錯誤嗎?如果你不明白代碼中的任何內容,請說出來。不同於'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; 
    } 
} 
+0

ppedido是什麼類型? –

+0

ppedido是一個列表類型,如果這就是你的意思。 –

+0

什麼樣的數據類型是你聲明返回的第一塊代碼? – Nit

回答

8

要調用CancelarPedido你宣佈之前。您需要重新訂購代碼或爲CancelarPedido添加前向聲明。

如果沒有在範圍內聲明CancelarPedido,則默認爲int CancelarPedido()。你會得到錯誤信息,因爲lista被聲明爲一個指針,但是CancelarPedido被聲明爲返回一個int。

+0

可以在代碼中預先聲明,我們只有一段代碼。談到這一點,如果我們看到更多的代碼,它會更容易幫助。 – Nit

+0

@Nit嗯,如果它是預先聲明的,那麼我們就不會看到那個錯誤信息。 –

+0

就是這樣,吉姆。謝謝你,這非常有幫助。 –