From: Mathieu Desnoyers Date: Thu, 25 Nov 2021 21:02:29 +0000 (-0500) Subject: Fix: static_assert unavailable with glibc < 2.16 X-Git-Tag: v2.13.1~13 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=7075c5a2f8f4f90a018d7d1ea8c6dadda609495d;p=lttng-ust.git Fix: static_assert unavailable with glibc < 2.16 gcc 4.8 introduces support for C11, and gcc 4.6 introduces support for _Static_assert. Therefore, using _Static_assert when C11 is detected is always OK. However, using static_assert in C11 depends on glibc >= 2.16. Even though the minimum version requirement for glibc is not documented in the README.md file, make a best effort to keep compatibility with older glibc. Fixes: #1331 Signed-off-by: Mathieu Desnoyers Change-Id: I33b65b839ea5ecd0f710179a7ef6fb6f5fda2e17 --- diff --git a/include/lttng/ust-compiler.h b/include/lttng/ust-compiler.h index 32fd1bb2..674b519c 100644 --- a/include/lttng/ust-compiler.h +++ b/include/lttng/ust-compiler.h @@ -65,9 +65,12 @@ * static assertion. This parameter must be a valid C identifier as it will * be used as a typedef name. */ -#if defined (__cplusplus) || __STDC_VERSION__ >= 201112L +#ifdef __cplusplus #define lttng_ust_static_assert(predicate, msg, c_identifier_msg) \ static_assert(predicate, msg) +#elif __STDC_VERSION__ >= 201112L +#define lttng_ust_static_assert(predicate, msg, c_identifier_msg) \ + _Static_assert(predicate, msg) #else /* * Evaluates the predicate and emit a compilation error on failure.