4

我正在学习 Dalvik VM 代码,但被文件InterpC-portable.cpp中的一些奇怪的 C 定义宏停止。他们对我来说很难理解。代码是:

# define H(_op)             &&op_##_op

在文件libdex/DexOpcodes.h中,它的使用如下:

#define DEFINE_GOTO_TABLE(_name) \
  static const void* _name[kNumPackedOpcodes] = {                      \
  /* BEGIN(libdex-goto-table); GENERATED AUTOMATICALLY BY opcode-gen */ \
  H(OP_NOP),                                                            \
  H(OP_MOVE),                                                           \
  H(OP_MOVE_FROM16),                                                    \
  ...

OP_NOP、OP_MOVE、OP_MOVE_FROM16 是一些枚举变量。但是H(_op)宏中的&&操作是什么意思呢?获取一个不存储在内存中的指针是没有意义的。任何人都可以帮助我吗?谢谢。

4

1 回答 1

7

&&标签值运算符。它返回当前作用域中定义的标签的地址,用作操作数。它是一个gcc扩展。

于 2012-11-14T14:29:25.207 回答