gpt4 book ai didi

c - C语言编程中使用结构体时出现错误

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

一开始我的代码是这样的,我是用gcc编译的

struct pcb{
int pid; /* process id */
int ppid; /* parent process id */
int prio; /* priority */
};
/* process node */
struct pnode{
pcb *node;
pnode *sub;
pnode *brother;
pnode *next;
};

然后它发送未知类型名称“pcb”的消息。然后我根据网上查到的修改代码,我修改后的代码如下。

typedef struct pcb{
int pid; /* process id */
int ppid; /* parent process id */
int prio; /* priority */
int state; /* state */
int lasttime; /* last execute time */
int tottime; /* totle execute time */
} pcb;
/* process node */
typedef struct pnode{
pcb *node;
pnode *sub;
pnode *brother;
pnode *next;
} pnode;

但是出现了新的错误;编译器向我发送了关于未知类型名称 'pnode' 的消息。我不知道如何在定义结构时使用我的结构变量。请给我一些提示。

最佳答案

关键字 struct 在 C 中需要声明具有结构类型的变量。

struct pcb{
int pid; /* process id */
int ppid; /* parent process id */
int prio; /* priority */
};
/* process node */
struct pnode{
struct pcb *node;
struct pnode *sub;
struct pnode *brother;
struct pnode *next;
};

您可以使用前向声明来避免编写许多 struct

typedef struct pcb{
int pid; /* process id */
int ppid; /* parent process id */
int prio; /* priority */
int state; /* state */
int lasttime; /* last execute time */
int tottime; /* totle execute time */
} pcb;
/* process node */
typedef struct pnode pnode;
struct pnode{
pcb *node;
pnode *sub;
pnode *brother;
pnode *next;
};

关于c - C语言编程中使用结构体时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37235603/

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