Ecosystem
Resources for the vast ecosystem behind C++
C++ Compilers and Toolchains
Popular C++ compilers, compiler front ends, and toolchains across desktop, embedded and WebAssembly targets
GCC
Mature open-source compiler collection with broad architecture and operating-system support and the libstdc++ C++ standard library
Clang
The Clang project provides a language front-end and tooling infrastructure for languages in the C language family (C, C++, Objective C/C++, OpenCL, and CUDA) for the LLVM project
MSVC
Microsoft's proprietary C++ toolchain for Windows, integrated with Visual Studio and also available as standalone Build Tools
Green Hills C/C++ Compiler
Commercial optimizing C/C++ compiler family for embedded and real-time systems, with support for a wide range of processor architectures
Embarcadero C++Builder
Embarcadero's BCC32C, BCC32X, BCC64, BCCIOSARM64 and BCCAARM compilers
Intel oneAPI DPC++/C++ Compiler
LLVM-based C++ compiler with SYCL and OpenMP offload support, optimized for Intel CPUs and GPUs
MinGW-w64
Mingw-w64 is a collection of header files, import libraries, libraries and tools that, when combined with a compiler toolchain, such as GCC or LLVM, provides a complete development environment for building native Windows applications and libraries
Emscripten
Emscripten is a complete compiler toolchain to WebAssembly, using LLVM, with a special focus on speed, size, and the Web platform
clang-cl
clang-cl is an alternative command-line interface to Clang, designed for compatibility with the Visual C++ compiler, cl.exe
Apple Clang
Apple's Clang-based C++ compiler included with Xcode, paired with libc++ and regularly updated for Apple platforms
EDG C++ Front End
Commercial, configurable C and C++ compiler front end intended for integration into compilers, source-analysis tools, and other language-processing products
nvcc (NVIDIA CUDA Compiler)
CUDA compiler driver that separates GPU device code from host C++ code, invokes NVIDIA's device compiler, and coordinates a supported host compiler
AMD Optimizing C/C++ Compiler (AOCC)
LLVM/Clang-based optimizing C and C++ compiler for x86 targets, with optimizations focused on AMD Zen processors
IAR C/C++ Compiler
Commercial optimizing C/C++ compiler family for embedded development, integrated with IAR Embedded Workbench and Build Tools
NVC++ (NVIDIA HPC SDK)
NVIDIA HPC C++ compiler supporting multicore CPUs and NVIDIA GPUs through standard C++ parallelism, OpenACC, and OpenMP
Standard Libraries
Implementations of the C++ standard library and notable alternatives
Package Managers
Tools for managing C++ libraries and dependencies
Build systems and generators
Tools for building C++ projects and managing build configurations
ABIs
Documentation of the C++ Application Binary Interface (ABI) and name mangling schemes used by various compilers and platforms
Itanium C++ ABI
The C++ ABI used by GCC, Clang, and other toolchains on many non-Windows platforms
Windows x64 ABI conventions
Documentation for the x64 ABI used by Windows toolchains such as MSVC
ARM 64-bit C++ ABI
C++ ABI requirements for the 64-bit ARM architecture
Windows ARM ABI conventions
Documentation for the ARM ABI used by Windows toolchains such as MSVC
Windows ARM64 ABI conventions
Documentation for the ARM64 ABI used by Windows toolchains such as MSVC
Windows ARM64EC ABI conventions
Documentation for the ARM64EC ABI used by Windows toolchains such as MSVC
RISC-V ELF psABI v1.0
The ratified ABI specification for the RISC-V architecture
RISC-V ELF psABI Latest
The latest development version of the RISC-V ABI specification
Visual C++ name mangling
Wiki article describing the mangling scheme used in MSVC
ARM 32-bit C++ ABI
C++ ABI requirements for the 32-bit ARM architecture, derived from the Itanium C++ ABI
ARM AAPCS32
Procedure call standard, data layout, and calling conventions for the 32-bit ARM architecture
ARM AAPCS64
Procedure call standard, data layout, and calling conventions for the 64-bit ARM architecture
System V x86-64 psABI
Processor ABI for x86-64 System V platforms, including calling conventions, data layout, ELF, and C++ conventions
System V i386 psABI
Processor ABI for 32-bit x86 System V platforms
Apple ARM64 ABI
Apple's ARM64 ABI, including Apple-specific differences from the generic ARM and C++ ABIs
Apple x86-64 ABI
Calling conventions and ABI requirements for 64-bit Intel code on Apple platforms
Apple ARMv7 ABI
ABI and calling conventions for ARMv7 code on legacy Apple platforms
PowerPC64 ELFv1 ABI
Original 64-bit PowerPC ELF ABI used primarily by big-endian PowerPC64 systems
PowerPC64 ELFv2 ABI
ELFv2 ABI for 64-bit Power Architecture systems, including calling and linkage conventions
MIPS System V ABI
System V processor ABI for MIPS, including data layout, calling conventions, ELF, and dynamic linking
s390x ELF ABI
ELF ABI and calling conventions for IBM Z and LinuxONE 64-bit systems
LoongArch ELF psABI
ELF processor ABI and calling conventions for LoongArch
WebAssembly Basic C ABI
ABI used by LLVM and Clang for interoperable C and C++ code targeting WebAssembly
IBM XL C++ ABI compatibility
IBM documentation of the XL, libC, and libc++ C++ ABIs and their name mangling and binary compatibility