我希望仅使用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;
关于c++ - 将char数组类型转换为结构(不是类/对象),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33004200/