如何理解这个定义宏?

时间:2012-11-14 14:25:57

标签: android c

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

# 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是一些 enum 变量。但是H(_op)宏中&& 操作的含义是什么?获取不存储在内存中的指针指针是没有意义的。有人可以帮帮我吗?感谢。

1 个答案:

答案 0 :(得分:7)

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