-
1 操作系统检测的答案基本相同: stackoverflow.com/questions/142508/… – Ciro Santilli OurBigBook.com公司 评论 2015年4月20日16:34 -
sourceforge.net/p/predef/wiki/架构 – 蒂姆(Timmmm) 评论 2021年11月5日16:36
8个答案
外部“C”{ const char*getBuild(){//获取当前架构,检测几乎所有架构。由Freak编码 #如果定义了(__x86_64__)||定义了(_M_X64) return“x86_64”; #elif定义的(i386) return“x86_32”; #elif定义(__ARM_ARCH_2___) return“ARM2”; #elif定义(__ARM_ARCH_3__)||定义(__ARM_ARCH_3M__) return“ARM3”; #elif定义(__ARM_ARCH_4T__)||定义(__TARGET_ARM_4T) return“ARM4T”; #elif定义(__ARM_ARCH_5_)||定义(__ARM_ARCH.5E_) 返回“ARM5” #elif定义(__ARM_ARCH_6T2_)||定义(__ARM_ARCH-6T2_) return“ARM6T2”; #elif定义(__ARM_ARCH_6__)||定义(__ARM_ARCH.6J__)||defined(__AMR_ARCH-6K__)||1defined return“ARM6”; #elif定义(__ARM_ARCH_7__)||定义(__ARM_ARCH_MA__)||defined(__AMR_ARCH.7R__)||1defined return“ARM7”; #elif定义(__ARM_ARCH_7A__)||定义(__ARM_ARCH-7R__)||defined(__AMR_ARCH.7M__)||1defined return“ARM7A”; #elif定义的(__ARM_ARCH_7R__)||定义的(___ARM_ARCH-7M__)||defined(___ARS_ARCH_7S__) return“ARM7R”; #elif定义(__ARM_ARCH_7M_) return“ARM7M”; #elif定义(__ARM_ARCH_7S__) 返回“ARM7S”; #elif定义的(__aarch64__)||定义的(_M_ARM64) return“ARM64”; #elif定义的(mips)||定义的(__mips_|)||定义的(__mips) return“MIPS”; #elif定义(__sh__) return“SUPERH”; #elif定义(__powerpc)||定义(__powerpc__)||已定义(__powerpc64__)||defined(__powerpc__)||1defined return“POWERPC”; #elif定义(__PPC64__)||定义(__PPC64__)| |定义(_ARCH_PPC64) return“POWERPC64”; #elif定义(__sparc_)||定义(__sparc) return“SPARC”; #elif定义(__m68k__) 返回“M68K”; #其他 return“未知”; #结尾 } }
-
三 -
1 -
7 我的意思是你回来 “ARM7” 你应该什么时候回来 “ARMv7” ,或 “ARMv7A” 或者别的什么。 ARM中的“v”在区分特定ARM核心模型与ISA版本之间的差异方面很重要。 请记住,有人在查看打印此字符串的程序时,只会看到机器上的一个字符串,而不是整个表,这表明它可能是“ARM6T2”(更清楚地说,这只是ARMv6T2的损坏,而不是CPU型号。) – 彼得·科尔德斯 评论 2021年2月21日10:24 -
-
#如果是MSVC #如果定义_M_X86 #定义ARCH_X86 #结尾 #结尾 #如果GCC #如果定义__i386__ #定义ARCH_X86 #结尾 #结尾
gcc-marc=native-dM-E-</dev/null
增压器_ARCH_ 对于系统/CPU体系结构,我们正在编译。 BOOST_COMP(引导_操作)_ 对于编译器,我们正在使用。 BOOST_LANG(增压_角度)_ 对于语言标准,人们正在进行编译。 增压_LIB_C_ 和 BOOST_LIB_STD(增压器_LIB_STD)_ 用于正在使用的C和C++标准库。 助推器_ 对于我们正在编译的操作系统。 BOOST_PLAT(增压_平板)_ 用于操作系统或编译器之上的平台。 BOOST_ENDIAN公司_ 操作系统的端接性和体系结构的结合。 BOOST_HW(增压_HW)_ 用于特定于硬件的功能。 增压_HW_SIMD 用于SIMD(单指令多数据)检测。
#包括<boost/predef.h> //或者只包含必要的标题 //#include<boost/predef/architecture.h> //#include<boost/predef/other.h> #如果BOOST_ARCH_X86 #如果BOOST_ARCH_X86_64 标准::cout<<“x86-64\n”; #消除BOOST_ARCH_X86_32 标准::cout<<“x86-32\n”; #其他 std::cout<<“x86-”<<BOOST_ARCH_ORD_BITS<<'\n';// 可能是x86-16 #结尾 #elif BOOST_ARCH_ARM(elif引导_警报_警报) #如果BOOST_ARCH_ARM>=BOOST_VERSION_NUMBER(8,0,0) #如果BOOST_ARCH_WORD_BITS==64 标准::cout<<“ARMv8+Aarch64\n”; #elif BOOST_ARCH_WORD_BITS==32 标准::cout<<“ARMv8+Aarch32\n”; #其他 std::cout<<“意外ARMv8+”<<BOOST_ARCH_WORD_BITS<<“bit\n”; #结尾 #elif BOOST_ARCH_ARM>=BOOST_VERSION_NUMBER(7,0,0) 标准::cout<<“ARMv7(ARM32)\n”; #elif BOOST_ARCH_ARM>=BOOST_VERSION_NUMBER(6,0,0) 标准::cout<<“ARMv6(ARM32)\n”; #其他 std::cout<<“ARMv5或更早版本\n”; #结尾 #elif BOOST_ARCH_MIPS #如果BOOST_ARCH_WORD_BITS==64 标准::cout<<“MIPS64\n”; #其他 标准::cout<<“MIPS32\n”; #结尾 #elif BOOST_ARCH_PPC_64 标准::cout<<“PPC64\n”; #elif BOOST_ARCH_PPC公司 标准::cout<<“PPC32\n”; #其他 std::cout<<“未知”<<BOOST_ARCH_WORD_BITS<<“-bit ARCH\n”; #结尾
AMD64型
|
||
|
-
-
您可以使用 AMD64型 和 英特尔x86 该页上列出的宏。 但你几乎肯定不应该使用 sizeof() , 统计_断言 等等。 您还应该了解x32 ABI。即使在64位体系结构上,指针也可以是32位的。 评论 2021年12月9日11:59
-
2 天啊,对不起,这个假链接应该是 hookatooka.com/poshlib 它提供有关用户标识/密码的信息。 我的浏览器必须在上次访问该页面时“自动登录”。 – 迈克尔·伯尔 评论 2009年4月9日21:20 -
2 也值得一提。。。 该网站的作者说明了他们为什么添加了密码: “对于给您带来的不便,我深表歉意,但由于我们之前的直接链接受到了无法解释的DDoS攻击,我们不得不创建此页面来“缓冲”DDoS…” 我不确定为此惩罚迈克尔是否公平。 – jww公司 评论 2016年6月3日22:40 -
用法
#如果是ARCHITECTURE_ARM ... #结尾
文件 手臂。 小时
#如果架构_ARM_H的索引 #定义ARCHITECTURE_ARM_H /* 发件人: https://github.com/boostorg/predef/blob/develop/include/boost/predef/architecture/arm.h https://github.com/cpredef/predef/blob/master/Architectures.md https://wiki.ubuntu.com/ARM/Thumb2PortingHowto网站 __arm__|由GNU C和RealView定义 __thumb__|由GNU C和RealView在thumb模式下定义 __TARGET_ARCH_ARM|由RealView定义 __TARGET_ARCH_THUMB|由RealView定义 _ARM |由ImageCraft C定义 _M_ARM|由Visual Studio定义 _M_ARMT|由Visual Studio在Thumb模式下定义 __手臂|由Diab定义 ARM 2 | __ARM_ARCH_2_ ARM 3|__ARM_ARCH_3__,__ARM-ARCH_3M__ ARM 4 | __ARM_ARCH_4__ ARM 4T |__ARM_ARCH_4T__,__TARGET_ARM_4T ARM 5|__ARM_ARCH_5__,__ARM-ARCH_5AE__ ARM 5T | __ARM_ARCH_5T__,__ARM-ARCH_5 TE__,__AARM_ARCH_ 5TEJ__ ARM 6|__ARM_ARCH_6__,__ARM-ARCH_5J__,__ARM_ARCH.6K__,__RAM_ARCH-6Z__,__ERM_ARCH_6ZK__ ARM 6T2|__ARM_ARCH_6T2__ ARM 7 | __ARM_ARCH_7__,__ARM-ARCH_7,__AMR_ARCH-7R__,__ARM_ARCH.7M_,__AARM_ARCH_7S__ ARM 2 | __ARM_ARCH_2_ ARM 3|__ARM_ARCH_3__,__ARM-ARCH_3M__ ARM 4T |__ARM_ARCH_4T__,__TARGET_ARM_4T ARM 5|__ARM_ARCH_5__,__ARM-ARCH_5AE__ ARM 5T | __ARM_ARCH_5T__,__ARM-ARCH_5 TE__,__AARM_ARCH_ 5TEJ__ ARM 6|__ARM_ARCH_6__,__ARM-ARCH_5J__,__ARM_ARCH.6K__,__RAM_ARCH-6Z__,__ERM_ARCH_6ZK__ ARM 6T2|__ARM_ARCH_6T2__ 手臂7 |__ARM_ARCH_7__,__ARM_ARCH_7A_,__ARM_ARCH_7R__,__ARM_ARCH_7M__,__ARM_ARCH_7S__ */ #如果已定义(__ARM_ARCH_2_) #定义ARCHITECTURE_ARM 1 #定义ARCHITECTURE_ARM_2 1 #elif定义(__ARM_ARCH_3__)||定义(__ARM_ARCH_3M__) #定义ARCHITECTURE_ARM 1 #定义ARCHITECTURE_ARM_3 1 #elif定义(__ARM_ARCH_4__) #定义ARCHITECTURE_ARM 1 #定义ARCHITECTURE_ARM_4 1 #elif定义(__ARM_ARCH_4T__)||定义(__TARGET_ARM_4T) #定义ARCHITECTURE_ARM 1 #定义ARCHITECTURE_ARM_4T 1 #elif定义(__ARM_ARCH_5__)||定义(__ARM_ARCH.5E__) #定义ARCHITECTURE_ARM 1 #定义ARCHITECTURE_ARM_5 1 #elif定义的(__ARM_ARCH_5T__)||定义的(___ARM_ARCH.5TE__)||已定义的(__ ARM_ARC H_5TEJ__) #定义ARCHITECTURE_ARM 1 #定义ARCHITECTURE_ARM_5T 1 #elif定义(__ARM_ARCH_6__)||定义(__ARM_ARCH.6J__)||defined(__AMR_ARCH-6K__)||1defined #定义ARCHITECTURE_ARM 1 #定义ARCHITECTURE_ARM_6 1 #elif定义(__ARM_ARCH_6T2__)||定义(__ARM_ARCH.6T2__) #定义ARCHITECTURE_ARM 1 #定义ARCHITECTURE_ARM_6T2 1 #elif定义(__ARM_ARCH_7__)||定义(__ARM_ARCH_MA__)||defined(__AMR_ARCH.7R__)||1defined #定义ARCHITECTURE_ARM 1 #定义ARCHITECTURE_ARM_7 1 #elif定义(__ARM_ARCH_7A__)||定义(__ARM_ARCH-7R__)||defined(__AMR_ARCH.7M__)||1defined #定义ARCHITECTURE_ARM 1 #定义ARCHITECTURE_ARM_7A 1 #elif定义的(__ARM_ARCH_7R__)||定义的(___ARM_ARCH-7M__)||defined(___ARS_ARCH_7S__) #定义ARCHITECTURE_ARM 1 #定义ARCHITECTURE_ARM_7R 1 #elif定义(__ARM_ARCH_7M_) #定义ARCHITECTURE_ARM 1 #定义ARCHITECTURE_ARM_7M 1 #elif定义(__ARM_ARCH_7S__) #定义ARCHITECTURE_ARM 1 #定义ARCHITECTURE_ARM_7S 1 #elif已定义(__aarch64__)||已定义(_M_ARM64)||定义(__AARCH64EL__)||defined(__ARM64) #定义ARCHITECTURE_ARM 1 #定义ARCHITECTURE_ARM_64 1 #elif定义(__arm__)||定义(__tumb__)||defined(__TARG_ARCH_arm)||已定义(__TAR GET_ARCH_thumb)||自定义(__arm)| |已定义的(_M_arm_T)| |定义的(__arm_ARCH) #定义ARCHITECTURE_ARM 1 #结尾 #endif/*架构_ARM_H*/
文件 x86_64.h
#如果建筑_X86_64_H #定义ARCHITECTURE_X86_64_H /* 发件人: https://github.com/cpredef/predef/blob/master/Architectures.md https://github.com/boostorg/predef/blob/develop/include/boost/predef/architecture/x86/64.h __amd64__、__amd64、__x86_64__、___x86_64 |由GNU C和Sun Studio定义 _M_X64,_M_AMD64|由Visual C定义++ */ #if defined(__x86_64__)|| defined #定义ARCHITECTURE_X86_64 #结尾 #endif/*架构_X86_64_H*/
文件 x86_32.小时
#ifndef建筑_X86_32_H #定义ARCHITECTURE_X86_32_H /* 发件人: https://github.com/cpredef/predef/blob/master/Architectures.md https://github.com/boostorg/predef/blob/develop/include/boost/predef/architecture/x86/32.h i386,__i386 __i386|由Sun Studio定义 __i386,__IA32__|由分层VOS C定义 _M_I86 |仅为16位体系结构定义。 由Visual C++、Digital Mars和Watcom C/C++定义(请参阅下面的注释) _M_IX86 |仅为32位体系结构定义。 由Visual C++、Intel C/C++、Digital Mars和Watcom C/C定义++ __X86__|由Watcom C/C定义++ _X86_|由MinGW32定义 __THW_INTEL__|由XL C/C定义++ __I86__|由数字火星定义 __INTEL__|由CodeWarrior定义 __386|由Diab定义 */ #如果定义(i386)||定义的(__i386 #定义ARCHITECTURE_X86_32 1 #结尾 #endif/*架构_X86_32_H*/