原标题:嵌入式开发中,C语言位结构体用途详解
在嵌入式开发中,经常需要表示各种系统状态,位结构体的出现大大方便了我们,尤其是在进行一些硬件层操作和数据通信时。但是在使用位结构体的过程中,是否深入思考一下它的相关属性?是否真正用到它的便利性,来提高系统效率?
下面将进行一些相关实验(这里以项目开发中的实际代码为例):
1.位结构体类型设计
[cpp] view plain copy print?
1. //data structure except for number structure
2. typedef struct symbol_struct
3. {
4. uint_32 SYMBOL_TYPE :5; //data type,have the affect on "data display type"
5. uint_32 reserved_1 :4;
6.
7. uint_32 SYMBOL_NUMBER :7; //effective data number in one element
8. uint_32 SYMBOL_ACTIVE :1;//symbol active status
9.
10. uint_32 SYMBOL_INDEX :8; //data index in norflash,result is related to "xxx_BASE_ADDR"
11. uint_32 reserved_2 :8;
12.
13. }SYMBOL_STRUCT,_PTR_ SYMBOL_STRUCT_PTR;
分析:这里定义了一个位结构体类型SYMBOL_STRUCT,那么用该类型定义的变量都哪些属性呢?
看下面运行结果:
WORDS是定义的另一个外层类型定义封装,可以把它当作变量来看待。WORDS变量里前5个数据域的地址都是0x1ffff082c,而reserved_