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

#type
#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 */
Append one of: 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
#define XIEITE_COMPILER_VER(_type, _cmp, _major, .../* _minor, _patch */) /* boolean expression */
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.


Example

int main() {
	std::println("Is current compiler GCC > v15? {}", XIEITE_COMPILER_VER(GCC, >, 15));
}
Possible output:
Is current compiler GCC > v15? true
[View in Compiler Explorer]