C变量可以声明为什么?

时间:2014-09-16 10:18:47

标签: c++ jvm var

存在如下所示的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,我需要帮助。

1 个答案:

答案 0 :(得分:2)

<name> : <size>指定位字段。代码中的五个命名变量中的每一个都占用一位。其余三位被缺少名称的语法

明确指定为未使用

这不是可以对任何C ++变量执行的操作,而是仅对位字段执行的操作。您可以使用显示的语法在structclass中的位字段中提供填充,而无需创建未使用的命名字段。它不需要是structclass中的最后一个字段:您也可以在位字段序列的中间创建填充。位字段的实际位置(包括任何填充)是实现定义的,因此将它放在与其他位字段相关的位置并不重要。