我想在x86和x86_64 linux上编译我的部分代码,但不是s390 linux或其他。如何在C中使用宏定义来实现呢?我知道 linux 是确定linux操作系统, 386 , 486 和 586 来确定CPU架构。是否有一个简单的宏定义来确定x86 linux和x86_64 linux?谢谢
答案 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 优化是否值得付出努力。