Search code examples
cproducer-consumer

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


I'm writing a Producer-Consumer solution but I keep getting "error: expected ']' before ';' token" when declaring "buffer_item buffer[BUFFER_SIZE];". I'm not quite sure what to do?

This is my buffer.h file:

typedef int buffer_item;

#define BUFFER_SIZE 5;

buffer.c file

#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..

Solution

  • Macros are string replacing, so

    #define BUFFER_SIZE 5;
    buffer_item buffer[BUFFER_SIZE];
    

    will become

    buffer_item buffer[5;];
    

    and you have extra semicolon after the number of elements.

    You should use

    #define BUFFER_SIZE 5
    

    (without semicolon) instead.