簡體   English   中英

C 中的結構錯誤錯誤:預期標識符或 '(' 在 '.' 標記之前

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM