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

我有结构

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中的标量类型:


算术类型
指针类型


希望对您有所帮助。

09-27 23:00