Я пытаюсь написать функцию для изменения данных в структуре.Вот часть моего кода.
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<unistd.h> #include<pthread.h> #include<sys/types.h> #define THREADNUM 20 pthread_mutex_t DeviceMutex ; struct VirtualPCB { int tid; int handlePriority; int arrivetime; int waittime; int runtime; int visited; int tempruntime; int finishtime; }PCBs[THREADNUM]; void initPCB() { int n; srand(time(NULL)); for(n =0;n<THREADNUM;n++) { PCBs[n].tid = n + 1; PCBs[n].handlePriority = 1 + rand()%19; PCBs[n].arrivetime = 1 + rand()%19; PCBs[n].tempruntime=PCBs[n].runtime = 1 + rand()%19; PCBs[n].waittime = 0; PCBs[n].visited =0; PCBs[n].finishtime = PCBs[n].arrivetime + PCBs[n].runtime; } } void change(PCBs[THREADNUM],int i, int j) { int temp; temp = PCBs[i].arrivetime; PCBs[i].arrivetime = PCBs[j].arrivetime; PCBs[j].arrivetime = temp; temp = PCBs[i].runtime; PCBs[i].runtime = PCBs[j].runtime; PCBs[j].runtime = temp; temp = PCBs[i].finishtime; PCBs[i].finishtime = PCBs[j].finishtime; }
, но есть ошибка.
"ошибка: ожидаемый спецификатор объявления или '...'
до PCBs. Я искал в Интернете, но не могу найти эффективный способ.Можете ли вы сказать мне, как их исправить?
PCBs
Синтаксис для определения функции неверен.Вам нужно изменить
void change(PCBs[THREADNUM],int i, int j) { ....
на
void change(struct VirtualPCB PCBs[THREADNUM],int i, int j) { ...
или
void change(struct VirtualPCB PCBs[ ],int i, int j) {....
Это недопустимый синтаксис для определения функции:
void change(PCBs[THREADNUM],int i, int j)
Первый параметр требует тип, который вы не указали:
void change(struct VirtualPCB PCBs[THREADNUM],int i, int j)