我正在尝试在我的程序中使用队列,但它不会编译,我不知道为什么。代码的相关部分如下。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#ifndef CUSTOMER
#define CUSTOMER
typedef int bool;
int r;
typedef struct{
int arrival;
int leaving;
} Customer;
static const int MAX_LENGTH = 100;
typedef struct{
int head;
int length;
Customer customer[MAX_LENGTH];
} CustomerLine;
void initializeQueue(CustomerLine* queue)
{
(*queue).head = 0;
(*queue).length = 0;
}
bool hasNext(CustomerLine* queue)
{
return (*queue).length > 0;
}
bool isFull(CustomerLine* queue)
{
return (*queue).length == MAX_LENGTH;
}
bool enqueue(CustomerLine* queue, Customer* customer)
{
if(isFull(queue))
return 0;
int index = ((*queue).head + (*queue).length) % MAX_LENGTH;
(*queue).customer[index] = *customer;
(*queue).length++;
return 1;
}
Customer* dequeue(CustomerLine* queue)
{
if(!hasNext(queue))
return 0;
Customer* result = &(*queue).customer[(*queue).head];
(*queue).length--;
(*queue).head = ((*queue).head + 1) % MAX_LENGTH;
return result;
}
错误说“在文件范围内变化修改了'客户'”我是编程的初学者,只是这样做开始超越我的能力所以任何帮助都会非常感激。
答案 0 :(得分:2)
该行
static const int MAX_LENGTH = 100
是问题所在。替换为
#define MAX_LENGTH 100
查看原因here以及更多解释here或here或再次here。
此外:
#endif
后需要#ifndef
。 main
功能。答案 1 :(得分:1)
在C中,const
表示只读,而不是像宏一样常量和可用。您不能像在此处一样使用变量来指定数组的维度:
static const int MAX_LENGTH = 100;
typedef struct{
int head;
int length;
Customer customer[MAX_LENGTH]; /* Wrong. MAX_LENGTH is not a compile time constant. */
} CustomerLine;