重庆网站排名推广,销售水果网站建设,广西做网站公司有哪些,主流媒体网站建设文章目录 查看编译器当前支持的宏定义查找指定的宏不同架构不同系统 附录-编译器内部常用的一些宏定义宏定义实际应用使用宏定义判断系统架构使用宏定义判断系统类型 一般情况下在linux下做C/C方面的开发不需要太关注系统架构#xff0c;当然如果涉及到不同架构下的适配问题方面的开发不需要太关注系统架构当然如果涉及到不同架构下的适配问题就需要额外处理了。最近开发中遇到了需要在不同的系统架构下分情况处理由于没有这方面的经验自己去找了相关的资料汇总整理了一些内容分享给有需要的小伙伴。 查看编译器当前支持的宏定义
在linux下使用如下命令gcc -E -dM - /dev/null可以查看当前编译器内部所有默认的宏定义
查找指定的宏
不同架构
如查找编译器是否支持x86架构相关的宏定义 gcc -E -dM - /dev/null| grep x86 查找32位arm相关的宏定义 gcc -E -dM - /dev/null| grep __arm__ 查找64位arm相关的宏定义 gcc -E -dM - /dev/null| grep __aarch64__
不同系统
windows系统的宏定义为 _WIN32 linux系统的宏定义为 __linux__ mac系统的宏定义为 __APPLE__
附录-编译器内部常用的一些宏定义
通常在构建时使用 #ifdef xxx最为方便
对于 32 位 ARM平台使用 arm 对于 64 位 ARM平台使用 aarch64 对于 32 位 x86平台使用 i386 对于 64 位 x86平台使用 x86_64 请注意32 位 X86 称为 __i386__而不是__x86__
宏定义实际应用
使用宏定义判断系统架构
#if (defined __arm__) || (defined __aarch64__) // arm平台cout arm platform... endl;
#elif (defined __i386__) || (defined __x86_64__) // x86平台cout x86 platform... endl;
#elif defined __APPLE__ // mac平台cout mac platform... endl;
#endif在x86平台运行结果如下
使用宏定义判断系统类型
判断是否为Linux系统可以使用__linux、__linux__、__gnu_linux__、linux宏定义具体有哪些宏可以自行查看自己的编译器支持的宏。 使用gcc -E -dM - /dev/null| grep linux命令可以查询
#ifdef _WIN32cout windows... endl;
#elif defined __linux__cout linux... endl;
#endif在64位linux系统上输出