未知的冲突类型

时间:2014-11-30 04:39:59

标签: c

我正在研究这个代码并且我在几个函数上得到冲突的类型,我将指针传递给某些结构作为参数,我看不出什么是错的,例如,在函数集中:

cliente *aux = f->inicio;

其中cliente是一个结构,但当我在另一个函数中用as:

调用它时
tratar_doc(aux);

其签名是:

void tratar_doc(cliente *c)

我收到此警告:'tratar_doc'[默认启用] |

的冲突类型

即使我的函数接受了cliente类型的指针以及作为参数传递的是一个cliente类型的指针。

编辑:这是一个重现问题的代码,最简单的我可以得到:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct documento{
    int chave;
    char nome[50];
    struct documento *prox;
}documento;

typedef struct cliente{
    int conta;
    char nome[50];
    char tipo;
    struct pilha *doc;
    struct cliente *prox;
}cliente;

typedef struct fila{
    int tamanho_fila;
    struct cliente *inicio;
    struct cliente *fim;
}fila;

typedef struct pilha{
    int tamanho_doc;
    struct documento *primeiro;
    struct documento *ultimo;
}pilha;

void atender(fila *f){
    cliente *aux = f->inicio;
    cliente *aux2 = f->fim;
    int i;
    for(i = 0; i < ((f->tamanho_fila) - 1); i++){
        aux2 = aux2->prox;
    }
    f->inicio = aux2;
    tratar_doc(aux);
    free(aux);
}

void tratar_doc(cliente *c){
    pilha *aux = c->doc;
}

警告:'tratar_doc'的冲突类型[默认启用] |

1 个答案:

答案 0 :(得分:1)

如果没有函数的前向声明,就会发生此类错误。如果没有前向声明,则第一次编译器遇到该函数时,它可以为其分配一个类型。定义函数时,此类型可能与指定的类型冲突。

放置

void tratar_doc(cliente *c);

在任何其他提及函数之前。这些前向声明通常放在包含的头文件中。