https://sourceforge.net/p/predef/wiki/Architectures/
Please send updates/corrections to predef-contribute .
Type Macro Description
Identification
__alpha__
Defined by GNU C
Version
__alpha_ev'V'__
V = Version
Identification
__alpha
Defined by DEC C
Identification
_M_ALPHA
Defined by Visual Studio
Example
CPU Macro
Alpha EV4
__alpha_ev4__
Alpha EV5
__alpha_ev5__
Alpha EV6
__alpha_ev6__
Type Macro Description
Identification
__amd64__
__amd64
__x86_64__
__x86_64
Defined by GNU C and Sun Studio
Identification
_M_X64_M_AMD64
Defined by Visual Studio
Notice that x32 can be detected by checking if the CPU uses the ILP32 data model .
Type Macro Description
Identification
__arm__
Defined by GNU C and RealView
Identification
__thumb__
Defined by GNU C and RealView in Thumb mode
Version
__ARM_ARCH_'V'__
V = Version Defined by GNU C 1
Identification
__TARGET_ARCH_ARM
__TARGET_ARCH_THUMB
Defined by RealView
Version
__TARGET_ARCH_ARM
= V__TARGET_ARCH_THUMB
= V
V = Version
Version
__TARGET_ARCH_'VR'
VR = Version and Revision
Identification
_ARM
Defined by ImageCraft C
Identification
_M_ARM
Defined by Visual Studio
Identification
_M_ARMT
Defined by Visual Studio in Thumb mode
Version
_M_ARM
= V
V = Version
Identification
__arm
Defined by Diab
Example
CPU Macro _M_ARM
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_5E__
5
ARM 5T
__ARM_ARCH_5T__
__ARM_ARCH_5TE__
__ARM_ARCH_5TEJ__
ARM 6
__ARM_ARCH_6__
__ARM_ARCH_6J__
__ARM_ARCH_6K__
__ARM_ARCH_6Z__
__ARM_ARCH_6ZK__
6
ARM 6T2
__ARM_ARCH_6T2__
ARM 7
__ARM_ARCH_7__
__ARM_ARCH_7A__
__ARM_ARCH_7R__
__ARM_ARCH_7M__
__ARM_ARCH_7S__
7
Type Macro Description
Identification
__aarch64__
Defined by GNU C 1
Type Macro Description
Identification
__bfin
__BFIN__
Defined by GNU C
Type Macro Description
Identification
__convex__
Defined by GNU C
Version
__convex_'V'__
V = Version
Example
CPU Macro
Convex C1
__convex_c1__
Convex C2
__convex_c2__
Convex C32xx series
__convex_c32__
Convex C34xx series
__convex_c34__
Convex C38xx series
__convex_c38__
Type Macro
Identification
__epiphany__
Type Macro Description
Identification
__hppa__
Defined by GNU C
Identification
__HPPA__
Defined by Stratus VOS C
Identification
__hppa
Version
_PA_RISC'V'_'R'
V = Version R = Revision
See also OpenPA.net .
Example
CPU Macro
PA RISC 1.0
_PA_RISC1_0
PA RISC 1.1
_PA_RISC1_1
__HPPA11__
__PA7100__
PA RISC 2.0
_PA_RISC2_0
__RISC2_0__
__HPPA20__
__PA8000__
Type Macro Format Description
Identification
i386
__i386
__i386__
Defined by GNU C
Version
__i386__
__i486__
__i586__
__i686__
Defined by GNU C
Identification
__i386
Defined by Sun Studio
Identification
__i386
__IA32__
Defined by Stratus VOS C
Identification
_M_I86
Only defined for 16-bits architectures Defined by Visual Studio, Digital Mars, and Watcom C/C++ (see note below)
Identification
_M_IX86
Only defined for 32-bits architectures Defined by Visual Studio, Intel C/C++, Digital Mars, and Watcom C/C++
Version
_M_IX86
V00
V = Version
Identification
__X86__
Defined by Watcom C/C++
Identification
_X86_
Defined by MinGW32
Identification
__THW_INTEL__
Defined by XL C/C++
Identification
__I86__
Defined by Digital Mars
Version
__I86__
V
V = Version
Identification
__INTEL__
Defined by CodeWarrior
Identification
__386
Defined by Diab
Notice that Watcom C/C++ defines _M_IX86
for both 16-bits and 32-bits architectures. Use __386__
or _M_I386
to detect 32-bits architectures in this case.
Notice that the Stratus VOS is big-endian on IA32, so these macros cannot be used to detect endianness if __VOS__
is set.
Example
CPU _M_IX86
__I86__
80386
300
3
80486
400
4
Pentium
500
5
Pentium Pro/II
600
6
Type Macro Format Description
Identification
__ia64__
_IA64
__IA64__
Defined by GNU C
Identification
__ia64
Defined by HP aCC
Identification
_M_IA64
Defined by Visual Studio
Identification
_M_IA64
Defined by Intel C/C++
Version
_M_IA64
?
Identification
__itanium__
Defined by Intel C/C++
Example
CPU _M_IA64
(Intel C/C++)
64100
Type Macro Description
Identification
__m68k__
Defined by GNU C
Version
__mc'V'__
__mc'V'
mc'V'
V = Version
Identification
M68000
Defined by SAS/C
Identification
__MC68K__
Defined by Stratus VOS C
Version
__MC'V'__
V = Version
Example
CPU Macro
68000
__mc68000__
__MC68000__
68010
__mc68010__
68020
__mc68020__
__MC68020__
68030
__mc68030__
__MC68030__
68040
__mc68040__
68060
__mc68060__
Type Macro Description
Identification
__mips__
mips
Defined by GNU C
Version
_MIPS_ISA
= _MIPS_ISA_MIPS'V'
V = MIPS ISA level
Version
_R3000
_R4000
_R5900
Identification
__mips
Defined by MIPSpro and GNU C
Version
__mips
The value indicates the MIPS ISA (Instruction Set Architecture) level
Version
__MIPS_ISA'V'__
V = MIPS ISA level
Identification
__MIPS__
Defined by Metrowerks
Example
CPU _MIPS_ISA
GNU C Macro __mips
MIPSpro Macro
R2000
_MIPS_ISA_MIPS1
1
R3000
_MIPS_ISA_MIPS1
_R3000
1
R6000
_MIPS_ISA_MIPS2
2
__MIPS_ISA2__
R4000
_R4000
R4400
_MIPS_ISA_MIPS3
3
__MIPS_ISA3__
R8000
_MIPS_ISA_MIPS4
4
__MIPS_ISA4__
R10000
_MIPS_ISA_MIPS4
4
__MIPS_ISA4__
Type Macro Description
Identification
__powerpc
__powerpc__
__powerpc64__
__POWERPC__
__ppc__
__ppc64__
__PPC__
__PPC64__
_ARCH_PPC
_ARCH_PPC64
Defined by GNU C
Version
__ppc'V'__
V = Version
Identification
_M_PPC
Defined by Visual Studio
Version
_M_PPC
?
Identification
_ARCH_PPC
_ARCH_PPC64
Defined by XL C/C++
Version
_ARCH_'V'
V = Version
Version
__PPCGECKO__
Gekko Defined by CodeWarrior
Version
__PPCBROADWAY__
Broadway Defined by CodeWarrior
Version
_XENON
Xenon
Identification
__ppc
Defined by Diab
Example
CPU _M_PPC
Macro XL Macro
PowerPC 440
_ARCH_440
PowerPC 450
_ARCH_450
PowerPC 601
601
__ppc601__
_ARCH_601
PowerPC 603
603
__ppc603__
_ARCH_603
PowerPC 604
604
__ppc604__
_ARCH_604
PowerPC 620
620
Pyramid 9810
Type Macro
Identification
pyr
Type Macro Description
Identification
__THW_RS6000
Defined by XL C/C++
Identification
_IBMR2
Identification
_POWER
Identification
_ARCH_PWR
_ARCH_PWR2
_ARCH_PWR3
_ARCH_PWR4
Type Macro Description
Identification
__sparc__
Defined by GNU C
Identification
__sparc
Defined by Sun Studio
Version
__sparc_v8__
__sparc_v9__
Defined by GNU C
Version
__sparcv8
__sparcv9
Defined by Sun Studio
Example
CPU Sun Studio Macro GNU C Macro
SPARC v8 (SuperSPARC)
__sparcv8
__sparc_v8__
SPARC v9 (UltraSPARC)
__sparcv9
__sparc_v9__
Type Macro Description
Identification
__sh__
Defined by GNU C
Version
__sh1__
__sh2__
__sh3__
__SH3__
__SH4__
__SH5__
Type Macro Description
Identification
__370__
__THW_370__
Identifies System/370 Defined by XL C/C++
Identification
__s390__
Identifies System/390 Defined by GNU C
Identification
__s390x__
Identifies z/Architecture Defined by GNU C
Identification
__zarch__
Identifies z/Architecture Defined by clang
Identification
__SYSC_ZARCH__
Identifies z/Architecture Defined by Systems/C
Type Macro Description
Identification
_TMS320C2XX
__TMS320C2000__
C2000 series
Identification
_TMS320C5X
__TMS320C55X__
C5000 series
Identification
_TMS320C6X
__TMS320C6X__
C6000 series
Example
DSP Macro
C28xx
_TMS320C28X
C54x
_TMS320C5XX
C55x
__TMS320C55X__
C6200
_TMS320C6200
C6400
_TMS320C6400
C6400+
_TMS320C6400_PLUS
C6600
_TMS320C6600
C6700
_TMS320C6700
C6700+
_TMS320C6700_PLUS
C6740
_TMS320C6740
TMS470
Type Macro
Identification
__TMS470__
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2020-06-03 双线性配对
2020-06-03 openssl speed
2020-06-03 dsa