c - 与 'int ()' (C) 的间接级别不同

标签 c

这段代码给我这个错误,我不明白。我什至无法运行该程序。你能帮我解决这个错误吗?如果您不明白代码中的任何内容,请说出来。

错误 C2040:“CancelarPedido”:“pedido (pedido)” 与“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。

关于c - 与 'int ()' (C) 的间接级别不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11166833/

相关文章:

c - 无跳转编程

c++ - "Culling"对于单个顶点 - glDrawArrays(GL_POINTS)

c - 在循环条件中使用 strlen() 是否比仅检查空字符慢?

检查文件是否存在和读取权限

c - 使用 C 发送 802.11 帧的最简单方法是什么?

c - C中通过指针将函数的返回值传递给另一个函数

c - 线程工作不当

c - 如何将文件打印到屏幕上?

c - 还有其他类型的控制台事件吗?

c++ - 查找符号链接(symbolic link)指向的位置 (Windows)