aboutsummaryrefslogtreecommitdiffstats
path: root/Compat.h
diff options
context:
space:
mode:
authorDaniel Lange <DLange@git.local>2024-01-10 12:40:37 +0100
committerDaniel Lange <DLange@git.local>2024-01-10 12:40:37 +0100
commit7271b076b82785ffca73ee9e4ae84cabb77018ee (patch)
treee8270dd60ec096bee8157dbadf029e15ed584592 /Compat.h
parentf288666edc9180a2e81e6655951878124f321df6 (diff)
downloaddebian_htop-upstream.tar.gz
debian_htop-upstream.tar.bz2
debian_htop-upstream.zip
New upstream version 3.3.0upstream/3.3.0upstream
Diffstat (limited to 'Compat.h')
-rw-r--r--Compat.h27
1 files changed, 24 insertions, 3 deletions
diff --git a/Compat.h b/Compat.h
index 1c4794e..2bc12dc 100644
--- a/Compat.h
+++ b/Compat.h
@@ -7,10 +7,9 @@ Released under the GNU GPLv2+, see the COPYING file
in the source distribution for its full text.
*/
-#include "config.h" // IWYU pragma: keep
-
+#include <assert.h> // IWYU pragma: keep
#include <fcntl.h>
-#include <stddef.h>
+#include <stddef.h> // IWYU pragma: keep
#include <unistd.h>
#include <sys/stat.h> // IWYU pragma: keep
@@ -61,4 +60,26 @@ ssize_t Compat_readlink(openat_arg_t dirfd,
char* buf,
size_t bufsize);
+/*
+ * static_assert() hack for pre-C11
+ * TODO: drop after moving to -std=c11 or newer
+ */
+
+/* C11 guarantees _Static_assert is a keyword */
+#if (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112L
+# if !defined(_Static_assert)
+# define _Static_assert(expr, msg) \
+ extern int (*__Static_assert_function (void)) \
+ [!!sizeof (struct { int __error_if_negative: (expr) ? 2 : -1; })]
+# endif
+#endif
+
+/* C23 will guarantee static_assert is a keyword or a macro */
+/* FIXME: replace 202300L with proper value once C23 is published */
+#if (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 202300L
+# if !defined(static_assert)
+# define static_assert(expr, msg) _Static_assert(expr, msg)
+# endif
+#endif
+
#endif /* HEADER_Compat */

© 2014-2024 Faster IT GmbH | imprint | privacy policy