我正在尝试为typedef结构中的数组赋值,并且不断地出现语法错误。
Error expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
这是我的代码:
myfile.h
#define Digit12 0x00u
#define Digit34 0x01u
#define Digit56 0x01u
typedef struct
{
uint8_t trData[3];
} CImageVersion;
myfile.c
CImageVersion oImageVersion; // declare an instance
oImageVersion.trData = { Digit12, Digit34, Digit56};
稍后在代码中
otherfile.c
extern CImageVersion oImageVersion;
arry是指针,但如果我将作业更改为
oImageVersion->trData = { Digit12, Digit34, Digit56};
我得到了同样的错误。关于我做错了什么我很困惑当我分配值时,错误指向oImageVersion之后
答案 0 :(得分:3)
您无法直接分配给数组。您使用的语法仅在变量定义时有效。即你可以这样做:
CImageVersion oImageVersion = { { Digit12, Digit34, Digit56} };
但不是这样:
CImageVersion oImageVersion;
oImageVersion.trData = { Digit12, Digit34, Digit56};
如果在定义变量时没有分配值,则需要分别为每个数组元素分配:
oImageVersion.trData[0] = Digit12;
oImageVersion.trData[1] = Digit34;
oImageVersion.trData[2] = Digit56;