XIEITE_COMPILER_TYPE_ /*???*/
, XIEITE_COMPILER_MAJOR_ /*???*/
, XIEITE_COMPILER_MINOR_ /*???*/
, XIEITE_COMPILER_PATCH_ /*???*/
, XIEITE_COMPILER_VER ()
Defined in header <xieite/pp/compiler.hpp>
Macros for identifying the current compiler and its version (major, minor, patch).
The macros are not mutually exclusive because I have no way to check which compilers are (e.g. Clang defines GCC and MSVC macros too).
As far as I know, this is the most complete collection of compiler detection macros on the internet.
Definitions
#typeAppend one of:#define XIEITE_COMPILER_TYPE_ /*???*/ /* boolean integer literal */ #define XIEITE_COMPILER_MAJOR_ /*???*/ /* integer literal */ #define XIEITE_COMPILER_MINOR_ /*???*/ /* integer literal */ #define XIEITE_COMPILER_PATCH_ /*???*/ /* integer literal */
ACK
, ADSP
, AHCC
, ALTIUM_C_TO_HARDWARE
, ALTIUM_MICROBLAZE_C
, AOCC
, ARMCC
, AZTEC_C
, BCC
, BORLAND
, C2
, CASTXML
, CC65
, CILLY
, CIRCLE
, CLANG
, COMEAU
, COMPAQ_C
, COMPAQ_CPP
, COMPCERT
, CONVEX_C
, COVERITY_STATIC_ANALYZER
, CRAY_C
, CRAY_F90
, DIGITAL_MARS
, DICE_C
, DIGNUS_SYSTEMS_CPP
, DJGPP
, ECPPS
, EDG
, EKOPATH
, ELLCC
, EMSCRIPTEN
, F2C
, FLANG
, FUJITSU_CPP
, GCC
, GCCXML
, GNU_F95
, GREEN_HILLS
, HEXAGON
, HIPCC
, HPUX_C
, HPUX_CPP
, HSC
, IAR
, ICC
, ICX
, IMAGECRAFT_C
, KCC
, KEIL_C166
, KEIL_C51
, KEIL_CARM
, KICKC
, LATTICE_C
, LCC
, LIGHTSPEED_C
, LLVM
, MCST_LLC
, METAWARE_HIGH
, METROWERKS_CODEWARRIOR
, MICROTEC
, MICROWAY_NDP_C
, MINGW32
, MINGW_W64
, MIPSPRO
, MIRACLE_C
, MPW
, MSVC
, NCC
, NORCROFT_C
, NVIDIA_HPC
, NVCC
, NWCC
, OCC
, OPEN64
, OPENACC
, OPENSERVER
, ORANGE_C
, PACIFIC_C
, PALM
, PCC
, PELLES_C
, PGI
, PUREC
, PRO_C
, PW32
, QUICKC
, RENESAS
, SDCC
, SHARC
, SNC
, SOZOBON
, STRATUS_VOS_C
, SUNPRO_C
, SUNPRO_CPP
, SYMANTEC_CPP
, TCC
, TENDRA
, TI_CGT
, TI_CL430
, TOPSPEED_C
, TURBO
, ULTIMATE
, USL_C
, VBCC
, VCM
, WASI
, WATCOM
, WIND_RIVER_DIAB
, XC8
, XC16
, XC32
, XC_DSC
, XL
, ZORTECH_CPP
, Z88DK
. See example.#ver
Allows up to two additional arguments for the minor and patch versions. Expands to an expression checking whether a compiler is present and the comparison of its version to the provided arguments.#define XIEITE_COMPILER_VER (_type ,_cmp ,_major ,... /* _minor, _patch */ )/* boolean expression */
Example
Possible output:int main () {std ::println ("Is current compiler GCC > v15? ,{} "XIEITE_COMPILER_VER (GCC, >,15 )); }
[View in Compiler Explorer]Is current compiler GCC > v15? true