gpt4 book ai didi

c - extern 用于 C 中新定义的结构

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

我在 main 中使用了节点结构,但是节点的定义及其操作操作位于名为 NODE/的目录中的文件中

我创建了 NODE/node.h,它有:

typedef struct node node;

struct node
{
int my_reg;
node *left;
node *right;
} ;

我创建了 NODE/node.c 并在其中包含了 node.h,其中包含 node_insert node_remove;

但是我在 school_address.c 中使用了节点结构,其中我还包含了 NODE/node.h 和 NODE/node.c

我试过

外部结构节点

在 school_address.c 中

然而代码没有编译并提示在 node.h 中重新定义

有什么想法吗?

最佳答案

extern 用于变量,而不是类型定义。您应该只在所有需要了解 struct node 的模块中包含 header ;替换整个 header 的内容,内联。

应该做的是将一个 C 文件包含在另一个 C 文件中。相反,您应该在 header 中声明常用函数的原型(prototype)。

例如,

#include "node.h"

int main()
{
// whatever
}

如果将 node_insert 的原型(prototype)放在 header 中,就变成了

typedef struct node node;

struct node
{
int my_reg;
node *left;
node *right;
};

struct node *node_insert(struct node *, int); // or whatever the prototype is

int main()
{
// whatever
}

在 C 预处理器完成后,struct nodenode_insertmain 中可见。

关于c - extern 用于 C 中新定义的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8915318/

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