在“;”之前得到“错误:预期的']'令牌”在C中声明数组时

问题描述

我正在编写生产者-消费者解决方案,但我不断在“;”之前得到“错误:预期的']'。声明“ 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

    ....

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...