3 Stimmen

Unterscheidet sich in den Ebenen der Indirektion von 'int()' (C)

Dieser Code gibt mir diesen Fehler, den ich nicht verstehe. Ich kann das Programm nicht einmal ausführen. Kannst du mir bitte helfen, diesen Fehler zu beheben? Wenn du irgendetwas im Code nicht verstehst, sag es bitte.

Fehler C2040: 'CancelarPedido' : 'ppedido (ppedido)' unterscheidet sich in den Indirektionsstufen von '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 Stimmen

Pedido ist ein Listen-Typ, wenn das ist, was Sie meinen.

0 Stimmen

Welcher Datentyp wird beim ersten Teil Ihres Codes deklariert, um zurückzukehren?

0 Stimmen

Typedef struct pedido pedido, *ppedido; struct pedido{ char id[5]; int prioridade; int mesa, n_pratos; struct prato *prato[TAM]; ppedido prox; }; struct prato{ char id[5]; };

9voto

Jim Balter Punkte 15501

Sie rufen CancelarPedido auf, bevor Sie es deklariert haben. Sie müssen den Code neu anordnen oder eine Vorwärtsdeklaration für CancelarPedido hinzufügen.

Ohne eine Deklaration von CancelarPedido im Geltungsbereich wird es als int CancelarPedido() standardmäßig angesehen. Sie erhalten die Fehlermeldung, weil lista als Zeiger deklariert ist, aber CancelarPedido als int deklariert ist.

1 Stimmen

Könnte früher im Code vordeklariert worden sein, wir haben nur einen Fragment des Codes. Übrigens, es wäre einfacher zu helfen, wenn wir mehr Code sehen würden.

0 Stimmen

@Nit Ähm, wenn es vordeklariert wäre, dann würden wir diese Fehlermeldung nicht sehen.

0 Stimmen

Also, wie deklariere ich, um eine Liste zurückzugeben? Danke noch einmal.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X