在';'之前的预期主要表达令牌

时间:2016-11-25 08:01:09

标签: c

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

typedef struct PROCESS{
        int priority;
        int lifecycle;
        int ttl; 

}process1,process2,process3,process4,process5,process6;

main(){
       PROCESS *waiting_queue;
       waiting_queue = process1;      //this is were I get the error. 
       waiting_queue =(PROCESS *)malloc(6*sizeof(PROCESS));
       if(!waiting_queue){printf("no memory for waiting queue   "); exit(0);}


       getch();       
}

我正在尝试使用指针创建结构数组。我收到了错误。在';'之前的预期主要表达令牌

2 个答案:

答案 0 :(得分:4)

您应该从(process1到process6)创建结构对象。

让我举个例子:

#include <stdio.h>
#include <string.h>

typedef struct student 
{
  int id;
  char name[20];
  float percentage;
} status;

int main() 
{
  status record;
  record.id=1;
  strcpy(record.name, "Orcun");
  record.percentage = 86.5;
  printf(" Id is: %d \n", record.id);
  printf(" Name is: %s \n", record.name);
  printf(" Percentage is: %f \n", record.percentage);
  return 0;
}

这就是您在主要功能中收到错误的原因。所以你应该创建你的struct对象,如:

process1 processOrcun;

您也可以在此处查看:https://www.codingunit.com/c-tutorial-structures-unions-typedef

答案 1 :(得分:3)

您有多个问题,但导致错误的问题是您没有定义类型 PROCESS,而是结构名。

当您使用typedef定义结构类型时,类型名称​​在结构后出现:

typedef struct
{
    ...
} PROCESS;

您遇到的错误是因为您定义了例如process1作为类型,因此赋值(使指针指向某个类型)没有任何意义。

另一个不相关的问题是如何定义main函数。必须将其定义为返回int(即使您的声明隐式执行,明确地执行此操作)并且要么使用void作为参数,要么返回一个整数和一个数组指向char的指针。在你的情况下它应该看起来像

int main(void) {
    ...
    return 0;
}