gpt4 book ai didi

c - "Error: unknown type name ..."在处理与二级 ADT 融合的一级 ADT 时。

转载 作者:可可西里 更新时间:2023-11-01 10:44:04 26 4
gpt4 key购买 nike

大家早上好

我是 SO 的新手,我问这个问题是因为我必须重新调整昨天的算法和编程考试。在 CodeBlocks 上输入我的考试时,我遇到了一个我无法修复的错误。基本上,考试要求从数据结构中的文件(格式:char *namecity, int population, int distance)中加载内存中的一些信息,然后它要求计算每个城市的相互距离并将它们收集到另一个数据中结构体。我决定制作 2 个 ADT:第一个在我的库“vett.h”中定义:

#ifndef VETT_H_INCLUDED
#define VETT_H_INCLUDED
#include "List.h"

typedef struct vett
{
char nome[21];
int abitanti, dist;
lista_t List;
} Item;

Item *vectInit(int N, Item *v);
Item *vectInsert(Item *v, char *nome, int people, int dist, int i);
#endif // VETT_H_INCLUDED

我根据老师的类(class)做了一个“几乎是 ADT”或“二级 ADT”(R.Sedgewick)。这样做,main 可以为该结构创建一个数组,并且可以直接访问该结构的字段;每个“单元格”包含:城市名称、人口、距离和一个列表类型字段。问题从这里开始。为了计算和保存城市间的相互距离,我决定在名为“List.h”的库中制作另一个 ADT 列表,类型为 1st class:

#ifndef LIST_H_INCLUDED
#define LIST_H_INCLUDED

#include "vett.h"

typedef struct lista *lista_t;

lista_t calculateMutualDistance(lista_t List, Item *v, int N, int dist);
int chechForBetter(int SD, int i, int N, Item *v);
lista_t listInit(lista_t List, int N);

#endif // LIST_H_INCLUDED`

文件“List.c”包含 .h 文件中指向的结构:

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

typedef struct node *Node;
struct node
{
char destination[21];
int distance;
Node next;
};

struct lista
{
Node head, tail;
};

(...)

现在我从 CodeBlocks 得到这个错误(在 vett.h 中,第 9 行,在 int abitanti,int dist 之后):

“错误:未知类型名称‘lista_t’”。

但是为什么? lista_t 包含在 List.c 文件中,应该从“vett.h”中完全可见,因为我包含了“List.h”并且指针在“List.c”中找到了它的结构,它有“List.h”也包括在内!

希望有人能给我解释一下,因为我只有 2 天的时间来调整程序并使其运行,而且时间非常长。感谢您的关注并为我的语法错误感到抱歉,因为您可以看出我不是英语。祝你有美好的一天!

最佳答案

这通常是前向声明问题。只需像这样更改您的 List.h 文件:

#ifndef LIST_H_INCLUDED
#define LIST_H_INCLUDED

typedef struct vett Item;
typedef struct lista *lista_t;

lista_t calculateMutualDistance(lista_t List, Item *v, int N, int dist);
int chechForBetter(int SD, int i, int N, Item *v);
lista_t listInit(lista_t List, int N);

#endif // LIST_H_INCLUDED`

关于c - "Error: unknown type name ..."在处理与二级 ADT 融合的一级 ADT 时。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35033220/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com