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

时间:2015-05-09 12:34:53

标签: c linux macros

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

2 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:0)

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

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