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 に答える