[英]structure errror in C error: expected identifier or ‘(’ before ‘.’ token
#include <stdio.h>
typedef struct car{
unsigned char buf[1024];
int index;
int hdr;
int len;
int dlms_detected;
}frma ;
int main()
{
frma dms;
dms.buf[1024] = {0x21,0x01,0x12,0x00};
dms.len = ( (dms.buf[3] << 8 ) | dms.buf[2] );
printf("%d",dms.len);
return 0;
}
我編譯了上面的代碼並得到了以下錯誤
main.c:20:17: error: expected expression before ‘{’ token
20 | dms.buf[1024] = {0x21,0x01,0x12,0x00};
我已經聲明了結構並為仍然出現錯誤的每一行給出了分號,請有人告訴我我做錯了什么?
首先,在 C 中沒有為 arrays 定義賦值運算符。 其次,這個具有 unsigned char 類型的表達式dms.buf[1024]
試圖訪問聲明數組之外的 memory 所以這個語句
dms.buf[1024] = {0x21,0x01,0x12,0x00};
是不正確的。
您可以在聲明 object dms
時初始化數組,例如
frma dms =
{
.buf = {0x21,0x01,0x12,0x00}
};
dms.len = ( (dms.buf[3] << 8 ) | dms.buf[2] );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.