存在如下所示的C ++代码:
byte _jfr_towrite : 1, // Flags
_caller_sensitive : 1,
_force_inline : 1,
_hidden : 1,
_dont_inline : 1,
: 3;
看到最后一行,奇怪的是之前没有任何事情:':'在'之后,变量名就是什么都没有。 代码来自jdk8 / openjdk / hotspot / src / share / vm / oops / method.hpp第113行。 我正在深入研究jdk,我需要帮助。
答案 0 :(得分:2)
<name> : <size>
指定位字段。代码中的五个命名变量中的每一个都占用一位。其余三位被缺少名称的语法
这不是可以对任何C ++变量执行的操作,而是仅对位字段执行的操作。您可以使用显示的语法在struct
或class
中的位字段中提供填充,而无需创建未使用的命名字段。它不需要是struct
或class
中的最后一个字段:您也可以在位字段序列的中间创建填充。位字段的实际位置(包括任何填充)是实现定义的,因此将它放在与其他位字段相关的位置并不重要。