add static_assert and hide noreturn, alignas, alignof from C++
authorSzabolcs Nagy <nsz@port70.net>
Tue, 26 Aug 2014 15:42:15 +0000 (17:42 +0200)
committerRich Felker <dalias@aerifal.cx>
Wed, 27 Aug 2014 06:55:54 +0000 (02:55 -0400)
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
include/stdalign.h
include/stdnoreturn.h

index ab745db..1ee02a4 100644 (file)
@@ -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
index b6e50ae..2cc94be 100644 (file)
@@ -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
 
index 60d924a..5c6aeeb 100644 (file)
@@ -1,5 +1,7 @@
 #ifndef _STDNORETURN_H
 #define _STDNORETURN_H
+#ifndef __cplusplus
 #include <features.h>
 #define noreturn _Noreturn
 #endif
+#endif