C 错误:未知类型名称和警告:函数的隐式声明
使用链表在c中实现队列时遇到问题。我已经在stackoverflow和其他网站上阅读了很多关于它的其他问题,但我仍然不知道如何解决我的代码的这个问题。任何人,请帮帮我? 这里是我的c代码:C 错误:未知类型名称和警告:函数的隐式声明,c,C,使用链表在c中实现队列时遇到问题。我已经在stackoverflow和其他网站上阅读了很多关于它的其他问题,但我仍然不知道如何解决我的代码的这个问题。任何人,请帮帮我? 这里是我的c代码: #include <stdio.h> #include <stdlib.h> struct elem{ int n; elem *prox; }; struct fila{ elem *inicio, *fim; }nop; void iniciar(fi
#include <stdio.h>
#include <stdlib.h>
struct elem{
int n;
elem *prox;
};
struct fila{
elem *inicio, *fim;
}nop;
void iniciar(fila *d){
d->inicio = (elem*) malloc(sizeof(elem));
d->fim = (elem*) malloc(sizeof(elem));
d->inicio->prox = d->fim;
d->fim->prox = NULL;
}
void inserir(fila *d, int x){
elem *novo = (elem*) malloc(sizeof(elem));
novo->n = x;
novo->fim->prox = NULL;
if(d->inicio->prox == NULL)
d->inicio->prox = novo;
else{
d->fim->prox = novo;
d->fim = novo;
}
}
void deletar(fila *d){
if(d->inicio->prox = NULL)
printf("Lista vazia")
else{
elem *apg;
apg = d->inicio->prox;
d->inicio->prox = apg->prox;
printf("%d", d->n);
free(apg);
}
}
int main(){
int x;
iniciar(&nop);
scanf("%d", &x);
inserir(&nop, x);
deletar(&nop);
return 0;
}
所以,这个问题是相当模糊的,但是我确实看到了一个问题,那就是你得到了标签和typedef的混淆。例如:
void inserir(fila *d, int x)
实际上应该被定义为
void inserir(struct fila *d, int x)
因为你把fila定义为一个标记。另一种方法是用下面的typedef关键字liek声明结构fila
typedef struct elem{
int n;
struct elem *prox;
} element;
typename struct {
element *inicio, *fim;
}fila nop;
这段代码中的大多数错误是因为您使用elem和fila作为类型名。但是,这些类型没有定义。引用结构类型时,需要在其前面加上struct关键字 您可以通过为每个类型添加一个typedef来解决此问题,以便仅通过类型名称引用它们:
typedef struct elem elem;
typedef struct fila fila;
在includes之后,将这些行放在源文件的顶部。这将解决大多数汇编问题。剩下的你应该能自己搞定。嗨,欢迎来到Stackoverflow。这个问题没有足够的实际细节。请在问题正文中填写错误信息,并使用标题给出一般说明。此外,请举例说明您的尝试。在没有适当上下文的情况下回答问题真的很困难。我需要在C中使用typedef。我刚刚试着编译你的代码。它甚至不是逻辑的,或者可能是,但它甚至不编译。我建议您首先解决所有的编译问题,然后带着一个真正的问题回来,即说明到底哪里出了问题,哪里出了问题,哪段代码是相关的,并生成一个最小的工作示例。你给我们的东西有十几个编译问题。在那之前,我投票认为这个问题过于宽泛。您还应该阅读有关typedefI的内容。我以前尝试过它,但它仍然没有解决问题。@JeffersonCarlosLimadaCosta它不会解决所有问题您还引用了无效成员、缺少分号等,但它解决了您在问题中提到的问题。如果您不理解所遇到的任何新错误,请使用修改后的代码更新您的问题,但不要删除现有代码和新错误。