Thu, 10 Sep 2026 09:35:41 +0200
simplify enum-based data type definitions
| src/chess/rules.h | file | annotate | diff | comparison | revisions |
--- a/src/chess/rules.h Tue Sep 08 22:35:50 2026 +0200 +++ b/src/chess/rules.h Thu Sep 10 09:35:41 2026 +0200 @@ -51,16 +51,17 @@ #ifdef __cplusplus extern "C" { +#endif + +#if defined(__cplusplus) || \ + (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202310L) #define enum_byte(name) enum e##name : uint8_t #define typedef_enum_byte(name) typedef enum e##name name -#elif __STDC_VERSION__ < 202310L +#else /* since #warning is also a C23 feature, the only hope is this: */ #pragma GCC warning "Type safety for enums is only available since C23" #define enum_byte(name) enum e##name #define typedef_enum_byte(name) typedef uint8_t name -#else -#define enum_byte(name) enum e##name : uint8_t -#define typedef_enum_byte(name) typedef enum e##name name #endif #define ENPASSANT_THREAT 0x40u