我希望仅使用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/

10-11 21:30