gpt4 book ai didi

c - 结构定义冲突

转载 作者:太空宇宙 更新时间:2023-11-04 03:51:02 25 4
gpt4 key购买 nike

我正在尝试为我们的小组项目实现一个二叉树。首先是一些代码。

二叉树结构:

typedef struct tBSTNode 
{
string *Key;
tVariable_Prom *BSTNodeCont;
struct tBSTNode * LPtr;
struct tBSTNode * RPtr;
} tBSTNodePtr;

树 (*BSTNodeCont) 的数据如下所示:

typedef struct Variable_Prom {
int TYPE;
double DOUBLE;
int INTEGER;
bool BOOL;
string *StringProm;
} tVariable_Prom;

但在一些特殊情况下,我还需要存储指向某些二叉树节点的指针数组...

所以我想到将这一行添加到我的数据结构中:

tBSNodePtr *pointer;

然后将其 malloc 到自定义数组大小。但是这里我遇到了一个问题,因为我的第一个结构当时需要定义第二个结构,而且我的第二个结构需要先定义第一个结构(因为它正在使用它)。

是否有关于函数结构的标题?或者是否有一个我没有看到的可以解决我的问题的简单方法?

编辑:以下问题的信息。我在我的 .c 文件中包含了一个头文件,其中包含另一个头文件,其中这个定义似乎有效。

struct tVariable_Prom;


typedef struct tBSTNode
{
string*Key;
struct tVariable_Prom *BSTNodeCont;
struct tBSTNode * LPtr;
struct tBSTNode * RPtr;
} tBSTNodePtr;

typedef struct Variable_Prom {
int Typ;
double DoUbLe;
int InTeGer;
bool BoOl;
string *StringProm;
struct tBSTNode *pointer;
} tVariable_Prom;

这里是 malloc,其中 foo 是 tVariable_Prom 类型:

foo.pointer = malloc(2 * sizeof(tBSTNodePtr));

以及一个通过节点键(Tstr)搜索二叉树并在成功时将地址返回给节点的函数(odkaz3):

BSTSearch(&odkaz3, *strom, &Tstr);

然后我试图分配另一个节点的地址,它是由另一个函数完成的,但实际上问题就在那里:

odkaz3->BSTNodeCont->pointer[0] = *odkaz2;

EDIT2:好的,我重新开始阅读你对我说的话,现在我有 2 个头文件tVariable_Prom.h:

struct tBSTNodePtr;

typedef struct Variable_Prom {
int Typ;
double DoUbLe;
int InTeGer;
bool BoOl;
string *StringProm;
tBSTNodePtr *pointer;
} tVariable_Prom;

tB​​STNodePtr.h:

struct tVariable_Prom;

typedef struct tBSTNode {
string *Key;
tVariable_Prom *BSTNodeCont;
struct tBSTNode * LPtr;
struct tBSTNode * RPtr;
} tBSTNodePtr;

我将两个头文件都包含在 parser.h 中,而 parser.h 又包含在 parser.c 中,但我现在确实遇到了这些错误:

tBSTNodePtr.h:5:2: error: unknown type name tVariable_Prom

odkaz4->BSTNodeCont->pointer[1] = *odkaz3; 一致:

parser.c request for member 'pointer' in something not a structure or union

最佳答案

您可以使用前向声明。

struct tVariable_Prom;

typedef struct tBSTNode
{
string *Key;
tVariable_Prom *BSTNodeCont;
struct tBSTNode * LPtr;
struct tBSTNode * RPtr;
} tBSTNodePtr;

反之亦然。并且(可选)将它们放在两个不同的标题中。

关于c - 结构定义冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20472374/

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