Home > Enterprise >  "error expected expression before '{' token"
"error expected expression before '{' token"

Time:05-31

I'm trying to declare global extern array and define it in another file but error is given. Please find the code snippet below

in .h

extern unsigned int HoldingRegisters[2];

in .c

HoldingRegisters={2,0};

"error expected expression before '{' token"

Thank you in advance

CodePudding user response:

This record in the header file in.h

extern unsigned int HoldingRegisters[2];

is a declaration of an array but not its definition.

In the file in.c apart from the declaration you need also to define the array like

unsigned int HoldingRegisters[2] = {2,0};

This definition must be placed in the file scope outside any function as for example

#include "in.h>

unsigned int HoldingRegisters[2] = {2,0};

//...

Otherwise this record that you shall remove)

HoldingRegisters={2,0};

represents an attempt to assign a braced list to the variable HoldingRegisters of the array type. However arrays are non-modifiable lvalues. That is they do not have the copy assignment operator and moreover in an assignment you need to use an expression and braced lists are not expressions.

  • Related