将字符数组类型转换为结构体(不是类/对象)
Typecast char array into a structure (not a class/object)
仅使用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;
相关文章:
- 将对象数组的引用传递给函数
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 类对象数组的问题会导致崩溃
- Arduino C++在构造函数中用参数声明对象数组
- 使用对象数组对 SFML 进行动画处理
- C++ 对象数组堆栈溢出
- 如何将对象数组作为参数传递给模板
- 使用向量初始化参数化构造函数的对象数组
- 如何初始化对象数组?
- C++创建对象数组
- 在对象数组中搜索字符串并返回相应值的函数
- 有没有办法使用该类的构造函数初始化另一个类的私有部分内的对象数组?
- 如何在运行时在对象数组中动态追加新对象C++并打印它们
- 为什么我在声明对象数组时不能使用 -> 运算符?
- 编译时生成应在构造函数中创建的非 constexpr 对象数组
- 使用 C++ 创建对象数组
- 对象数组打印空白字符串
- 重载运算符 [] 用于从对象数组中给出特定索引
- 如何在 C++ 中使用提升属性树从 JSON 文件中读取对象数组