在gcc中,几乎所有的东西都是用树结构串起来的,从而形成抽象语法树。tree可以看作是指向树节点的指针,所有的树节点都有一个共同的基类:tree_common。
在文件coretypes.h中,tree的定义如下:
#ifndef USED_FOR_TARGET
...
typedef union tree_node *tree;
...
#else
...
#define tree union _dont_use_tree_here_ *
...
#endif
可见,当
USED_FOR_TARGET宏未被定义的时候,tree是指向联合类型
tree_node的指针类型;否则,tree是一个定义为
union _dont_use_tree_here_ *的宏。
在tree.h中,可以找到union tree_node的定义:
union tree_node
{
struct tree_common common;