GCC主要数据结构之cpp_hashnode

#define CPP_HASHNODE_VALUE_IDX(HNODE)    \   ((HNODE.flags & NODE_MACRO_ARG) ? NTV_ARGUMENT  \    : HNODE.type == NT_MACRO ? ((HNODE.flags & NODE_BUILTIN)  \           ? NTV_BUILTIN : NTV_MACRO) \    : HNODE.type == NT_ASSERTION ? NTV_ANSWER   \    : NTV_NONE)

/* The common part of an identifier node shared amongst all 3 C front    ends.  Also used to store CPP identifiers, which are a superset of    identifiers in the grammatical sense.  */

union GTY(()) _cpp_hashnode_value {   /* If a macro.  */   cpp_macro * GTY((tag ("NTV_MACRO"))) macro;   /* Answers to an assertion.  */   struct answer * GTY ((tag ("NTV_ANSWER"))) answers;   /* Code for a builtin macro.  */   enum cpp_builtin_type GTY ((tag ("NTV_BUILTIN"))) builtin;   /* Macro argument index.  */   unsigned short GTY ((tag ("NTV_ARGUMENT"))) arg_index; };

struct GTY(()) cpp_hashnode {   struct ht_identifier ident;   unsigned int is_directive : 1;   unsigned int directive_index : 7; /* If is_directive,         then index into directive table.         Otherwise, a NODE_OPERATOR.  */   unsigned char rid_code;  /* Rid code - for front ends.  */   ENUM_BITFIELD(node_type) type : 6; /* CPP node type.  */   unsigned int flags : 10;  /* CPP flags.  */

  union _cpp_hashnode_value GTY ((desc ("CPP_HASHNODE_VALUE_IDX (%1)"))) value; };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值