Typecast char数组到一个结构(不是类/对象)

时间:2015-10-07 23:37:55

标签: c++ struct casting

仅使用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;

1 个答案:

答案 0 :(得分:2)

此类投射是未定义的行为。 我强烈建议避免它。

尽管如此,如果确实需要 并且您确定它是安全的,请尝试

myVar = *(sMYSTRUCT*)byteArray;