[问题] C 语言的 Bit fields

楼主: xvid (DivX)   2016-07-19 09:26:09
关于 C 的 Bit fields 有一个段落不太了解,想请教各位一下
在 Cppreference 网页中提到
http://en.cppreference.com/w/c/language/bit_field
The following properties of bit fields are implementation-defined:
‧...(省略)...
‧Whether a bit field can straddle an allocation unit boundary
请问上文中提到 "straddle" 与 "allocation unit boundary"是什么意思?
感谢!
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-07-19 10:40:00
straddle就是坐在墙壁上,两腿跨在两边。allocation unit boundary是内存配置(allocation)最小单位(unit)的边界(boundary) 你是不是没有字典简而言之这个单位在32-bit系统上是4 bytes而某个field如果跨4 bytes的边界 例如刚好在bit 28-35那要不要给他跨 还是让他挤到下一个4 bytes去整包就会多出4 bytes 要看compiler怎么做 标准不规定
楼主: xvid (DivX)   2016-07-19 12:54:00
有查字典,只是全拼在一起就看不懂了。谢谢解答!
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-07-19 15:35:00
组语或计算机组织应该都会提到这个最小单位 可以留意
作者: chuegou (chuegou)   2016-07-19 19:09:00
内存对齐
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-07-20 18:13:00
写错了 这个状况应该不管怎么样也会多出4 bytes只是他要使用bits 28-35 或者推到32-39 28-31让他空着则由compiler来决定
楼主: xvid (DivX)   2016-07-20 20:45:00
我也没注意到4bytes的部份XD 不过可以理解的意思

Links booklink

Contact Us: admin [ a t ] ucptt.com