Next: , Up: Target Macros


17.1 全局变量targetm

— Variable: struct gcc_target targetm

目标机.c文件必须定义包含了目标机器相关的函数指针和数据的全局变量 targetm。该变量在target.h中声明; target-def.h定义了用来初始化该变量的宏TARGET_INITIALIZER, 和结构体元素的缺省初始化宏。.c文件应该覆写这些缺省定义不合适的宏。例如:

          #include "target.h"
          #include "target-def.h"
          
          /* Initialize the GCC target structure.  */
          
          #undef TARGET_COMP_TYPE_ATTRIBUTES
          #define TARGET_COMP_TYPE_ATTRIBUTES machine_comp_type_attributes
          
          struct gcc_target targetm = TARGET_INITIALIZER;

其中,宏应该通过这种方式在.c文件中被定义, 从而成为targetm结构体的一部分。 该宏将在下面作为具有函数原型的“目标钩子”来介绍。 在.h.h文件中定义的许多宏将来都会改为targetm结构体的一部分。