私は C に非常に慣れていないため、このコンパイル エラーに関する過去のスレッドを調べても問題を解決できませんでした。
これは私のコードです:
#include <stdio.h>
#include <stdlib.h>
struct PCB{
/*various data fields within the PCB structure*/
/*in this implementation just ID is included*/
int ID;
struct PCB *next;
struct PCB *prev;
}typedef PCB;
void enqueue(PCB **pntrHN, PCB **pntrTL, PCB passedPCB);
PCB dequeue(PCB **pntrHN, PCB **pntrTL);
void print_queue(PCB **pntrTL);
int size_of_queue(PCB **pntrTL);
void clear_queue(PCB **pntrHN, PCB **pntrTL);
int main(int argc, char * argv[])
{
PCB **headOfQueue;
PCB **tailOfQueue;
PCB pcbNode;
headOfQueue = malloc(sizeof(PCB*));
tailOfQueue = malloc(sizeof(PCB*));
*headOfQueue = 0;
*tailOfQueue = 0;
for(i=0; j<100; j++)
{
PCB temp;
temp.ID = rand()%30000+20001;
enqueue(headOfQueue,tailOfQueue,temp);
}
print_queue(tailOfQueue);
int size = size_of_queue(tailOfQueue);
printf("Size of queue: %d\n", size);
clear_queue(headOfQueue, tailOfQueue);
size = size_of_queue(tailOfQueue);
printf("Size of queue now: %d\n", size);
return(0);
}
/*enqueue is here*/
PCB dequeue(PCB **pntrHN, PCB **pntrTL)
{
PCB *tempHead; /*temp var for new head*/
PCB returnVal;
if((*pntrHN)->next !=0){
printf("nodes next is not 0");
exit(0);
}
if(*pntrHN == 0){
printf("dequeued an empty queue");
exit(0);
}
if(*pntrTL == 0){
printf("dequeued empty queue");
printf("head is not zero but tail is");
exit(0);
}
returnVal = **pntrHN; /*get data for return*/
if(*pntrHN == *pntrTL){
*pntrTL = 0;
tempHead = 0;
}else{
tempHead = (*pntrHN)->prev; /*get new head*/
tempHead ->next = 0;
}
free(*pntrHN); /*free old head*/
*pntrHN = tempHead; /*set class attribute to new tail*/
return returnVal;
}
void clear_queue(PCB **pntrHN, PCB **pntrTL)
{
PCB holder;
if(*pntrTL != 0){
while(*pntrHN != 0){
(*pntrHN)->prev = *pntrHN;
holder = dequeue(**pntrHN, **pntrTL);
}
}
}
}
私の構文は大丈夫ですか?どこが間違っていたのか、今は本当にわかりません。ssh経由でnotepad ++とgccを使用しています。