Add static_assert macro definition in <assert.h>
This declaration conforms to the C11 standard Reference: ISO/IEC 9899:201x 7.2 Diagnostics <assert.h> _Static_assert performs compile-time assertion checking. According to ISO/IEC 9899:201x (draft) 7.2 Diagnostics <assert.h> defines the static_assert macro which expands to _Static_assert. It's not conditionalized by NDEBUG like the assert macro. According to ISO/IEC N3242=11-0012 (C++1x) the <cassert> header shall define only the assert macro, but not static_assert as it's already part of the C++11 language. Allow to define static_assert in C++ prior the C++11 standard. It might be broken but a nonstandard C++ compiler might support C11-like _Static_assert feature. Note that it's fatal for g++ 5.4, but it works for clang++ 3.8.1. Approved by <joerg>.
This commit is contained in:
parent
8f4376cb6f
commit
ba27f5b7d6
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: assert.h,v 1.21 2011/08/26 01:10:49 joerg Exp $ */
|
||||
/* $NetBSD: assert.h,v 1.22 2016/10/03 12:08:39 kamil Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1992, 1993
|
||||
|
@ -104,3 +104,9 @@ void __diagassert(const char *, int, const char *);
|
|||
void __diagassert13(const char *, int, const char *, const char *);
|
||||
__END_DECLS
|
||||
#endif /* __ASSERT_DECLARED */
|
||||
|
||||
#if ((__cplusplus - 0) < 201103L)
|
||||
#ifndef static_assert
|
||||
#define static_assert _Static_assert
|
||||
#endif /* static_assert */
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue