我想在一个C程序中完成不同的任务。该程序将在基于x86/x64的GNU/Linux系统以及基于ARM的系统上运行,例如在PC或RaspberryPI上。
是否有GCC预定义的宏可以告诉平台?
类似以下内容:
#ifdef _X64_
/do x64 stuff
#elif _ARM_
//do arm stuff
#endif
或许这种方法不太妥当?我将使用
Makefile
进行编译,那么我可以使用自己的定义。哪种方法最好/最安全呢?我想在一个C程序中完成不同的任务。该程序将在基于x86/x64的GNU/Linux系统以及基于ARM的系统上运行,例如在PC或RaspberryPI上。
是否有GCC预定义的宏可以告诉平台?
类似以下内容:
#ifdef _X64_
/do x64 stuff
#elif _ARM_
//do arm stuff
#endif
Makefile
进行编译,那么我可以使用自己的定义。哪种方法最好/最安全呢?你可以在这里找到它们:
http://sourceforge.net/p/predef/wiki/Architectures/
你的方法只适用于小段代码或函数,但应该可以工作。
编辑:
基本上,因为链接可能失效:
__arm__
应该在 ARM 上工作。
__x86_64__
应该在 x64 架构上工作。
是的,你可以这样做:
#ifdef __x86_64__
// do x64 stuff
#elif __arm__
// do arm stuff
#endif