我正在学习 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)宏中的&&操作是什么意思呢?获取一个不存储在内存中的指针是没有意义的。任何人都可以帮助我吗?谢谢。