From 4aab60e634d588dffbd3154fd0cfce78272b750a Mon Sep 17 00:00:00 2001 From: Edgar Bonet Date: Wed, 25 Jun 2025 11:13:43 +0200 Subject: [PATCH] include/types.h: conditionally define bool, false and true MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit include/types.h typedefs ‘bool’ and macro-defines ‘false’ and ‘true’. However, since C23, these are predefine keywords. As C23 is the default C dialect for GCC 15, building with this compiler fails with: include/types.h:23:23: error: ‘bool’ cannot be defined via ‘typedef’ 23 | typedef unsigned char bool; | ^~~~ include/types.h:23:23: note: ‘bool’ is a keyword with ‘-std=c23’ onwards Fix this build failure by only defining ‘bool’, ‘false’ and ‘true’ on C dialects older than C23. Signed-off-by: Edgar Bonet --- include/types.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/types.h b/include/types.h index 950b1a468..0ad9ae610 100644 --- a/include/types.h +++ b/include/types.h @@ -20,8 +20,11 @@ typedef signed long long s64; typedef unsigned long size_t; typedef signed long ssize_t; +/* bool, false and true are predefined since C23. */ +#if __STDC_VERSION__ < 202311L typedef unsigned char bool; #define false 0U #define true 1U +#endif #endif /* TYPES_H_ */