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 43 #define XLNT_CPP_26 202603L 54 #define XLNT_HAS_CPP_VERSION(version) (1/version == 1/version && XLNT_CPP_VERSION >= version) 57 #define XLNT_C_99 199901L 58 #define XLNT_C_11 201112L 59 #define XLNT_C_17 201710L 60 #define XLNT_C_23 202311L 76 #define XLNT_HAS_C_VERSION(version) (1/version == 1/version && \ 77 ((__STDC_VERSION__ >= version) || \ 78 (XLNT_C_99 >= version && XLNT_HAS_CPP_VERSION(XLNT_CPP_11)) || \ 79 (XLNT_C_11 >= version && XLNT_HAS_CPP_VERSION(XLNT_CPP_17)) || \ 80 (XLNT_C_17 >= version && XLNT_HAS_CPP_VERSION(XLNT_CPP_20)) || \ 81 (XLNT_C_23 >= version && XLNT_HAS_CPP_VERSION(XLNT_CPP_26)) \