Browse Source

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.
Szabolcs Nagy 9 years ago
parent
commit
70729de075
3 changed files with 11 additions and 0 deletions
  1. 4 0
      include/assert.h
  2. 5 0
      include/stdalign.h
  3. 2 0
      include/stdnoreturn.h

+ 4 - 0
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

+ 5 - 0
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
 

+ 2 - 0
include/stdnoreturn.h

@@ -1,5 +1,7 @@
 #ifndef _STDNORETURN_H
 #define _STDNORETURN_H
+#ifndef __cplusplus
 #include <features.h>
 #define noreturn _Noreturn
 #endif
+#endif