XIEITE_PLATFORM_TYPE_/*???*/, XIEITE_PLATFORM_MAJOR_/*???*/, XIEITE_PLATFORM_MINOR_/*???*/, XIEITE_PLATFORM_PATCH_/*???*/, XIEITE_PLATFORM_VER()

Defined in header <xieite/pp/platform.hpp>

Macros for identifying the current platform or operating system and its version (major, minor, patch).
The macros are not mutually exclusive due to some being related to others (e.g. an Android platform is also a Linux platform).


Definitions

#type
#define XIEITE_PLATFORM_TYPE_/*???*/ /* boolean integer literal */
#define XIEITE_PLATFORM_MAJOR_/*???*/ /* integer literal */
#define XIEITE_PLATFORM_MINOR_/*???*/ /* integer literal */
#define XIEITE_PLATFORM_PATCH_/*???*/ /* integer literal */
Append one of: AEGIS, AIX, AKAROS, AMIGAOS, AMIGAOS_POWERUP, AMIGAOS_WARPOS, AMIX, ANDROID, APPLE_II, APPLE_IIE, AROS, ASMJS, ATARI, ATARI_2600, ATARI_5200, ATARI_LYNX, ATARI_XL, BADA, BEOS, BLUE_GENE, BLUE_GENE_Q, BRIDGE_OS, BSD, BSD_OS, BSDI, CLOUDABI, CMB, CMB_500, CMB_600, COMMANDER_X16, COMMODORE_16, COMMODORE_64, COMMODORE_128, COMMODORE_PLUS_4, COMMODORE_VIC20, CONVEXOS, CPM, CYGWIN, DC_OSX, DG_UX, DOMAIN_OS, DRAGONFLY_BSD, DRIVERKIT, DYNIX, ECOS, EMX, EPOC32_MARM, EPOC32_WINS, FREEBSD, FREERTOS, FUCHSIA, GEOS, GEOS_APPLE, GEOS_CMB, GNU_HURD, GNU_KFREEBSD, GNU_LINUX, GP32, HAIKU, HI_UX, HI_UX_MPP, HP_UX, ILLUMOS, INTEGRITY, INTERIX, IOS, IOS_SIMULATOR, IRIX, KALLISTI, LINUX, LUNIX, LYNXOS, MACCATALYST, MACINTOSH, MACINTOSH_DYLD, MIDNIGHTBSD, MINGW32, MINGW64, MINIX, MINT, MORPHOS, MP_RAS, MPE_IX, MS_DOS, NACL, NETBSD, NETWARE, NES, NEXT, NINTENDO_3DS, NINTENDO_64, NINTENDO_DS, NINTENDO_GAMECUBE, NINTENDO_SWITCH, NINTENDO_WII, NONSTOP, NUCLEUS_RTOS, NUTTX, OHIO_SCIENTIFIC_CHALLENGER_1P, OHOS, OPENBSD, OPENSERVER, ORIC_ATMOS, OS_2, OS_400, OS_9, OSE, PALM_OS, PDOS, PET, PHOENIX, PLAN_9, PNACL, PPCC, PSOS, QNX, RISCOS, RTEMS, RTTHREAD, SEGA_DREAMCAST, SIM6502, SIM65C02, SINIX, SKYOS, SOLARIS, SUNOS, SONY_PS, SONY_PS2, SONY_PS3, SONY_PS4, SONY_PS5, SONY_PSP, SONY_VITA, SORTIX, SUPERVISION, SYGWIN, SYLLABLE, SYM1, SYMBIAN, SYSTEM_V, SWLINUX, TELESTRAT, THREADX, TRU64, TV_OS, UC_OS_II, UCLINUX, ULTRIX, UNICOS, UNICOS_MP, UNIX, UNIX_SV, UNIXWARE, UTS, UWIN, VMS, VOS, VXWORKS, VISION_OS, WATCH_OS, WINDOWS, WINDOWS_CE, WINDOWS_DESKTOP, WINDOWS_GDK, WINDOWS_NT, WIND_U, XBOX, XBOX_360, XBOX_ONE, XBOX_SERIES, XENIX, Z, ZEPHYR, ZETA. See example.
#ver
#define XIEITE_PLATFORM_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 platform is present and the comparison of its version to the provided arguments.


Example

int main() {
	std::println("Is target platform Linux? {}", XIEITE_PLATFORM_TYPE_LINUX);
}
Possible output:
Is target platform Linux? 1
[View in Compiler Explorer]