仅使用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;
答案 0 :(得分:2)
此类投射是未定义的行为。 我强烈建议避免它。
尽管如此,如果确实需要 并且您确定它是安全的,请尝试
myVar = *(sMYSTRUCT*)byteArray;