我正在尝试为我的叉子编写一个过程表。我有一个全局表,每个过程都必须写入该表中。
我有结构
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;
listeKopf:
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
有人可以帮助我吗?
最佳答案
我查看了您的代码,基本上在您的第284行,您具有以下表达式:
p = (Pstatus) listeKopf(temp);
p只是
Pstatus struct variable
,而您的listeKopf(temp)
返回(void *kopf)
,该值不能分配给非标度变量(应将其分配给指针)。您应该将代码更改为如下所示:
Pstatus *p
p = listeKopf(temp);
为了避免出现错误,也不需要
cast to Pstatus
,因为void *
可以分配给任何指针类型。C中的标量类型:
算术类型
指针类型
希望对您有所帮助。