gpt4 book ai didi

将列表转换为结构

转载 作者:行者123 更新时间:2023-11-30 15:32:33 24 4
gpt4 key购买 nike

我正在尝试为我的 fork 编写一个进程表。我有一个全局表,每个进程都必须写入该表中。

我已经得到了结构

typedef struct {
int pid; /* Prozess ID */
char* name; /* Prozess Name (Programm) */
char* status; /* Status des Programms */
int check; /* bereits abgerufen? 1 - abgerufen, 0 - nicht abgerufen */
} Pstatus;

听:

typedef struct liste {
void *kopf;
struct liste *rest;
} *Liste;

列表科普夫:

void* listeKopf(Liste l) { 
if(l==NULL)
abbruch("listeKopf(listeLeer) undefiniert");
return l->kopf;
}

listeAnfuegen:

Liste listeAnfuegen(Liste l, void* element){
Liste neu=reserviere(sizeof (struct liste));
neu->kopf = element;
neu->rest = l;
return neu;
}

我正在使用 struct Pstatus 将我的进程写入列表。当我尝试从列表中读取时,出现错误:第 284 行请求转换为非标量类型

我的代码在这里:

http://pastebin.com/xEDvLTQk

有人可以帮助我吗?

最佳答案

所以 Liste 是一个通用列表,可以通过 void * 指针保存对任何内容的引用,对吧? listeKopf 返回该指针。

根据您的定义,Pstatus是一个结构体,而不是指向结构体的指针,因此您无法从void *转换为它。您也不应该能够使用 -> 运算符访问其成员,而只能使用点 . 语法。

(就个人喜好而言,我不喜欢 typedef 指针类型,这样你就可以通过查看代码中的星号来判断变量是否是指针。)

关于将列表转换为结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24186195/

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