如何在gcc的编译时识别x86与x86_64?

我想仅在x86和x86_64 linux上编译我的部分代码,而不是s390 linux或其他。 如何在C中使用宏定义来实现呢? 我知道linux是确定linux OS,而386,486586确定CPU架构。 是否有一个简单的宏定义来确定x86 linux和x86_64 linux? 谢谢

您可以轻松检测是否处于64位模式:

 #if defined(__x86_64__) /* 64 bit detected */ #endif #if defined(__i386__) /* 32 bit x86 detected */ #endif 

如果您的编译器没有提供预定义的宏和常量,您可以自己定义: gcc -D WHATEVER_YOU_WANT

额外奖励:如果您编译代码为amd64 ,但未定义amd64 ,则可以比较结果(使用amd64特定部分与通用版本的版本)并查看您的amd64优化值是否值得努力。