作者xvid ()
看板C_and_CPP
标题[问题] C 语言的 Bit fields
时间Tue Jul 19 09:26:09 2016
关於 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"是什麽意思?
感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.72.76.81
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1468891573.A.0A2.html
1F:→ MOONRAKER: straddle就是坐在墙壁上,两腿跨在两边。 07/19 10:40
2F:→ MOONRAKER: allocation unit boundary是记忆体配置(allocation) 07/19 10:41
3F:→ MOONRAKER: 最小单位(unit)的边界(boundary) 你是不是没有字典 07/19 10:42
4F:→ MOONRAKER: 简而言之这个单位在32-bit系统上是4 bytes 07/19 10:43
5F:→ MOONRAKER: 而某个field如果跨4 bytes的边界 例如刚好在bit 28-35 07/19 10:45
6F:→ MOONRAKER: 那要不要给他跨 还是让他挤到下一个4 bytes去 07/19 10:45
7F:→ MOONRAKER: 整包就会多出4 bytes 要看compiler怎麽做 标准不规定 07/19 10:46
8F:→ xvid: 有查字典,只是全拼在一起就看不懂了。谢谢解答! 07/19 12:54
9F:→ MOONRAKER: 组语或计算机组织应该都会提到这个最小单位 可以留意 07/19 15:35
10F:推 chuegou: 记忆体对齐 07/19 19:09
11F:→ MOONRAKER: 写错了 这个状况应该不管怎麽样也会多出4 bytes 07/20 18:13
12F:→ MOONRAKER: 只是他要使用bits 28-35 或者推到32-39 28-31让他空着 07/20 18:15
13F:→ MOONRAKER: 则由compiler来决定 07/20 18:16
14F:→ xvid: 我也没注意到4bytes的部份XD 不过可以理解的意思 07/20 20:45