gpt4 book ai didi

c - C中的前向声明?

转载 作者:行者123 更新时间:2023-12-02 00:24:25 27 4
gpt4 key购买 nike

我有一个有序的 List 结构,它的结构有两个成员,一个 Titem 类型的数组和一个 int 计数器。现在,这个 List 可以采用任何类型并按升序排列。假设,我决定 typedef char Titem,那么数组包含字符,如果我 typedef int Titem,那么数组包含整数。现在,我在某处有一个类型为 Tage 的结构;

如何让有序列表识别它。当我执行 typedef Tage Titem 时,它会提示。我应该将它插入到 OList 头文件的什么位置?或者有没有办法像在 C++ 中用 C 语言那样做前向声明?

 #ifndef OLIST_H
#define OLIST_H



/*typedef char Titem; here, i typedef char to Titem, though commented out..
how do i do similar thing for the Tage datatype i have?

*/


#define MAX 10
typedef struct {
int count;
Titem array[MAX]; //Titem is not typedefed yet, so error..
} TOrderedList;



void initialize_list(TOrderedList *list);
int insert_item(TOrderedList *list, Titem item);
int retrieve_ith(const TOrderedList *list, int i, Titem *item);
int number_of_items(const TOrderedList *list);
int list_empty(const TOrderedList *list);

#endif

最佳答案

你不能在这里使用前向声明,除非你想使用指向Titem的指针,比如:

#define MAX 10
typedef struct {
int count;
Titem *array[MAX]; //Titem is not typedefed yet, so error..
} TOrderedList;

因为编译器需要知道 Titem 的大小才能创建 TOrderedList 结构。

在使用之前包含 Titem 的定义,我不会指望包含文件在其他文件中的顺序。

关于c - C中的前向声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9417462/

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