哪个头文件定义了指定机器架构的宏?

Lor*_*ein 9 linux header-file

问题的简短版本:

其中C头包含宏对应于该系统的机器体系结构(例如,__x86_64__,__ia64__,__mips__?)

更长版本的问题:

我想在运行 Linux 的基于Tilera的系统上运行神经节监控工具。

Ganglia 目前不支持 Tilera。为了让它工作,我需要修改一个名为machine_type_func的 C 函数,它返回机器架构。这个函数的主体是在编译时确定的,它看起来像这样:

g_val_t
machine_type_func ( void )
{
   g_val_t val;

#ifdef __i386__
   snprintf(val.str, MAX_G_STRING_SIZE, "x86");
#endif
#ifdef __x86_64__
   snprintf(val.str, MAX_G_STRING_SIZE, "x86_64");
#endif
...
   return val;
}
Run Code Online (Sandbox Code Playgroud)

我需要为 Tilera 添加适当的行,但我不知道指定基于 Tilera 的系统的宏的名称。我猜这个宏是在标准 Linux 头文件之一中定义的,但我不知道要查看哪个。

Tom*_*omH 9

没有头文件定义它 - 这些宏是由编译器预定义的。要查找预定义宏的完整列表,请执行以下操作:

echo | gcc -E -dM -
Run Code Online (Sandbox Code Playgroud)

然后查看可能的宏的结果。