我是靠谱客的博主 魁梧哈密瓜,这篇文章主要介绍c++中结构体位域使用注意事项,现在分享给大家,希望可以做个参考。

1、一个位域必须存储在同一个单元中,不能跨两个单元。如一个单元所剩空间不够存放另一位域时,应从下一单元起存放该位域。如下

第一个unsigned short 中 没有足够的空间存储system_clock_reference_base_29_15_,所以应当先将第一个unsigned short用'0'补齐,从下一个能够容得下该数据的空间开始存放。

2、可以使用无名域位,这样的域位作用只是用来补齐,不能使用。

3、一个空间的开始位置一定是从该空间大小的整数倍开始。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/** * PS packet header */ typedef struct ps_packet_header { unsigned char start_code[4]; // '0x00 00 01 ba', 32 bit, 4 byte unsigned short fix_code : 2; // must be '0x 01' unsigned short system_clock_reference_base_32_30_ : 3; unsigned short marker_bit_1 : 1; unsigned short : 0; //剩余2bit用0补齐 unsigned short system_clock_reference_base_29_15_ : 15; unsigned short marker_bit_2 : 1; // 52 bit unsigned short system_clock_reference_base_14_0_ : 15; unsigned short marker_bit_3 : 1; // 70 bit unsigned short system_clock_reference_extension : 9; unsigned short marker_bit_4 : 1; // 80 bit, 10 Byte unsigned short : 0; //剩余6bit用0补齐 unsigned int program_mux_rate : 22; unsigned int marker_bit_5 : 1; unsigned int marker_bit_6 : 1; // 104 bit, 13 Byte unsigned char reserved : 5; unsigned char pack_stuffing_length : 3; // 112 bit, 14 Byte }ps_packet_header_t;

 

最后

以上就是魁梧哈密瓜最近收集整理的关于c++中结构体位域使用注意事项的全部内容,更多相关c++中结构体位域使用注意事项内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(78)

评论列表共有 0 条评论

立即
投稿
返回
顶部