From 70729de075bfe3138b05af91ecefcd5786bed5ac Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Tue, 26 Aug 2014 17:42:15 +0200 Subject: [PATCH] add static_assert and hide noreturn, alignas, alignof from C++ add static_assert and protect the other new C11 keyword macros with #ifndef __cplusplus so they don't conflict with C++ keywords. --- include/assert.h | 4 ++++ include/stdalign.h | 5 +++++ include/stdnoreturn.h | 2 ++ 3 files changed, 11 insertions(+) diff --git a/include/assert.h b/include/assert.h index ab745db1..1ee02a4a 100644 --- a/include/assert.h +++ b/include/assert.h @@ -8,6 +8,10 @@ #define assert(x) ((void)((x) || (__assert_fail(#x, __FILE__, __LINE__, __func__),0))) #endif +#ifndef __cplusplus +#define static_assert _Static_assert +#endif + #ifdef __cplusplus extern "C" { #endif diff --git a/include/stdalign.h b/include/stdalign.h index b6e50aeb..2cc94be3 100644 --- a/include/stdalign.h +++ b/include/stdalign.h @@ -1,6 +1,8 @@ #ifndef _STDALIGN_H #define _STDALIGN_H +#ifndef __cplusplus + /* this whole header only works in C11 or with compiler extensions */ #if __STDC_VERSION__ < 201112L && defined( __GNUC__) #define _Alignas(t) __attribute__((__aligned__(t))) @@ -9,6 +11,9 @@ #define alignas _Alignas #define alignof _Alignof + +#endif + #define __alignas_is_defined 1 #define __alignof_is_defined 1 diff --git a/include/stdnoreturn.h b/include/stdnoreturn.h index 60d924a0..5c6aeeb0 100644 --- a/include/stdnoreturn.h +++ b/include/stdnoreturn.h @@ -1,5 +1,7 @@ #ifndef _STDNORETURN_H #define _STDNORETURN_H +#ifndef __cplusplus #include #define noreturn _Noreturn #endif +#endif -- 2.25.1