Getting "error: expected ']' before ';' token" when declaring an array in C

Getting "error: expected ']' before ';' token" when declaring an array in C

我正在编写一个生产者-消费者解决方案,但我不断收到“错误:在‘;’之前应为‘]’” token”声明“buffer_item buffer[BUFFER_SIZE];”。我不太确定该怎么做?

这是我的 buffer.h 文件:

typedef int buffer_item;

#define BUFFER_SIZE 5;

buffer.c 文件

#include <stddef.h>
#include <stdlib.h>
#include <unistd.h>
#include "buffer.h"

buffer_item buffer[BUFFER_SIZE];

void *producer(void *param);
void *consumer(void *param);
//etc..

宏是字符串替换,所以

#define BUFFER_SIZE 5;
buffer_item buffer[BUFFER_SIZE];

会变成

buffer_item buffer[5;];

并且在元素数量之后有额外的分号。

你应该使用

#define BUFFER_SIZE 5

(没有分号)代替。

只需在定义常量时删除分号

   #define BUFFER_SIZE 5

    ....