将字符数组类型转换为结构体(不是类/对象)

Typecast char array into a structure (not a class/object)

本文关键字:对象 数组 字符 类型转换 结构体      更新时间:2023-10-16

仅使用ANSI-C,我希望将字节数组复制到结构体中,

alt_u8 byteArray[16];
sMYSTRUCT myVar;
myVar = (sMYSTRUCT)(byteArray);

,但似乎我需要c++来做这个…然而,当我启用c++时,我得到了错误"没有匹配的函数调用'sMYSTRUCT::sMYSTRUCT(alt_u8 [16])"

我认为这是因为编译器不知道如何将数据复制到结构中。这是正确的吗?这样做的唯一方法是定义一个类,创建该类的对象,然后类型转换字节数组吗?

    typedef struct
    {
        alt_u8 Byte0;
        alt_u8 Byte1;
    } stByte_1_0;
    typedef struct
    {
        union
        {
            alt_u16     WORD0;
            stByte_1_0  BYTE_1_0;
        } uSel;
    } stWord0;
    typedef struct
    {
        stByte_1_0  WORD0;
        alt_u16 WORD1;
    } sMYSTRUCT;

这样的强制转换是未定义的行为。我强烈建议避免使用

然而,如果确实需要强制转换,并且您确定它是安全的,请尝试
myVar = *(sMYSTRUCT*)byteArray;