在进行数据组包的时候,先给data_pkg_type进行赋值,确定数据包的类型,再给对应的union里的结构体进行赋值;在进行数据解析的时候,通过data_pkg_type来选择解析哪一组数据。 思考一下,如果在union里面再嵌套一层union会怎么样?会变得更复杂?以前的话,我会觉得越嵌套会越复杂,我也很抵制这种不断嵌套的做法。但后来...
联合体中嵌套结构体定义 1/* 第⼀种⽅法 */ 2typedef union 3 { 4struct VEHICLE_s 5 { 6 TERMINAL_DATA_s sTerminal_Obj;7 GPS_DATA_s sGps_Obj;8 TMPS_DATA_s sTmps_Obj;9 POSE_DATA_s sPose_Obj;10 OBD_DATA_s sObd_Obj;11 }Vehicle_Obj;12 uint8_t Vehicl...
联合体中嵌套结构体定义 1/*第一种方法*/2typedef union3{4structVEHICLE_s5{6TERMINAL_DATA_s sTerminal_Obj;7GPS_DATA_s sGps_Obj;8TMPS_DATA_s sTmps_Obj;9POSE_DATA_s sPose_Obj;10OBD_DATA_s sObd_Obj;11}Vehicle_Obj;12uint8_t Vehicle_Bytes[sizeof(structVEHICLE_s)];13}VEHICLE_MONIT_u...
在进行数据组包的时候,先给data_pkg_type进行赋值,确定数据包的类型,再给对应的union里的结构体进行赋值;在进行数据解析的时候,通过data_pkg_type来选择解析哪一组数据。 思考一下,如果在union里面再嵌套一层union会怎么样?会变得更复杂?以前的话,我会觉得越嵌套会越复杂,我也很抵制这种不断嵌套的做法。但后来...
所有的寄存器被封装成联合体类型的,联合体里边的成员是一个32bit的整数及一个结构体,该结构体以位域的形式体现。这样就可以达到直接操控寄存器的某些位了。比如,我们要设置PA0引脚的GPAQSEL1寄存器的[1:0]两位都为 1,则我们只操控两个bit就可以很方便的这么设置: ...
本次分享结构体、联合体嵌套使用的一些场景。 结构体、联合体是C语言中的构造类型,结构体我们平时应该都用得很多。但是,对于联合体,一些初学的朋友可能用得并不多,甚至感到陌生。我们先简单看一下联合体: 在C语言中定义联合体的关键字是union。 定义一个联合类型的一般形式为: ...
下面我们一起看一下结构体、联合体结合使用在C语言、嵌入式中的一些实用技巧。 1、应用于管理不同的数据 示例代码: enum DATA_PKG_TYPE { DATA_PKG1 = 1, DATA_PKG2, DATA_PKG3 }; struct data_pkg1 { // ... }; struct data_pkg2 {
下面我们一起看一下结构体、联合体结合使用在C语言、嵌入式中的一些实用技巧。 1、应用于管理不同的数据 示例代码: 这里把struct data_pkg1、struct data_pkg2、struct data_pkg3三个结构体放到了struct data_pkg这个结构体里进行管理,把data_pkg_type与union里的三个结构体建立一一对应关系,我们需要用哪一结构...
ZhengNL 兄的写一些总结,可以学习一下。鱼鹰一直想写关于各种数据结构嵌套(结构体、联合体、枚举)使用的知识,但总是没有动力写,正好ZhengNL 写了其中一部分,很不错,可以先看看。以后没啥写的时候,鱼鹰会详细介绍这些数据结构设计的初衷。
在C语言中定义联合体的关键字是union。 定义一个联合类型的一般形式为: union 联合名 { 成员表 }; 1. 2. 3. 4. 成员表中含有若干成员,成员的一般形式为:类型说明符 成员名。其占用的字节数与成员中最大数据类型占用的字节数。 下面我们一起看一下结构体、联合体结合使用在C语言、嵌入式中的一些实用技巧...