30 #ifndef XLNT_CPP_VERSION 31 #if defined(_MSVC_LANG) && _MSVC_LANG > __cplusplus // take the larger one of the two (Microsoft does the same in the MSVC STL) 32 #define XLNT_CPP_VERSION _MSVC_LANG 34 #define XLNT_CPP_VERSION __cplusplus 38 #define XLNT_CPP_11 201103L 39 #define XLNT_CPP_14 201402L 40 #define XLNT_CPP_17 201703L 41 #define XLNT_CPP_20 202002L 42 #define XLNT_CPP_23 202302L 55 #define XLNT_HAS_CPP_VERSION(version) (1/version == 1/version && XLNT_CPP_VERSION >= version) 58 #define XLNT_C_99 199901L 59 #define XLNT_C_11 201112L 60 #define XLNT_C_17 201710L 61 #define XLNT_C_23 202311L 77 #define XLNT_HAS_C_VERSION(version) (1/version == 1/version && \ 78 ((__STDC_VERSION__ >= version) || \ 79 (XLNT_C_99 >= version && XLNT_HAS_CPP_VERSION(XLNT_CPP_11)) || \ 80 (XLNT_C_11 >= version && XLNT_HAS_CPP_VERSION(XLNT_CPP_17)) || \ 81 (XLNT_C_17 >= version && XLNT_HAS_CPP_VERSION(XLNT_CPP_20))