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 ab745db18022aeda15f1d04ba6d4ef93c82b4f9d..1ee02a4a5fb095d0cffacba1cc05a36a94633138 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 b6e50aebdbfd65c8f142c26174710fb22e02b4e3..2cc94be3f6d7e4b65839cbcd35a1e5286139e4c8 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 60d924a070e4c2d48e21b79ba1fe8943ab86acc0..5c6aeeb008cd8150dda6bd2421b85627ee6014dd 100644 (file)
@@ -1,5 +1,7 @@
 #ifndef _STDNORETURN_H
 #define _STDNORETURN_H
+#ifndef __cplusplus
 #include <features.h>
 #define noreturn _Noreturn
 #endif
+#endif