Debug.h: Implement a real STATIC_ASSERT on non-GCC2.
This commit is contained in:
parent
e0d28cdccf
commit
47b079afc9
@ -63,7 +63,7 @@ extern "C" {
|
||||
|
||||
#define ASSERT_WITH_MESSAGE(expr, msg) \
|
||||
(!(expr) ? _debuggerAssert( __FILE__,__LINE__, msg) \
|
||||
: (int)0)
|
||||
: (int)0)
|
||||
|
||||
#define TRESPASS() DEBUGGER("Should not be here");
|
||||
|
||||
@ -72,7 +72,7 @@ extern "C" {
|
||||
#else /* DEBUG == 0 */
|
||||
#define SET_DEBUG_ENABLED(FLAG) (void)0
|
||||
#define IS_DEBUG_ENABLED() (void)0
|
||||
|
||||
|
||||
#define SERIAL_PRINT(ARGS) (void)0
|
||||
#define PRINT(ARGS) (void)0
|
||||
#define PRINT_OBJECT(OBJ) (void)0
|
||||
@ -90,12 +90,18 @@ extern "C" {
|
||||
|
||||
/* STATIC_ASSERT is a compile-time check that can be used to */
|
||||
/* verify static expressions such as: STATIC_ASSERT(sizeof(int64) == 8); */
|
||||
#define STATIC_ASSERT(x) \
|
||||
do { \
|
||||
struct __staticAssertStruct__ { \
|
||||
char __static_assert_failed__[2*(x) - 1]; \
|
||||
}; \
|
||||
} while (false)
|
||||
#if __GNUC__ >= 5 && !defined(__cplusplus)
|
||||
# define STATIC_ASSERT(x) _Static_assert(x, "static assert failed!")
|
||||
#elif defined(__cplusplus) && __cplusplus >= 201103L
|
||||
# define STATIC_ASSERT(x) static_assert(x, "static assert failed!")
|
||||
#else
|
||||
# define STATIC_ASSERT(x) \
|
||||
do { \
|
||||
struct __staticAssertStruct__ { \
|
||||
char __static_assert_failed__[2*(x) - 1]; \
|
||||
}; \
|
||||
} while (false)
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* _DEBUG_H */
|
||||
|
@ -69,12 +69,18 @@
|
||||
# define ASSERT_PRINT(x, format, args...) do { } while(0)
|
||||
#endif
|
||||
|
||||
#define STATIC_ASSERT(x) \
|
||||
do { \
|
||||
struct __staticAssertStruct__ { \
|
||||
char __static_assert_failed__[2*(x) - 1]; \
|
||||
}; \
|
||||
} while (false)
|
||||
#if __GNUC__ >= 5 && !defined(__cplusplus)
|
||||
# define STATIC_ASSERT(x) _Static_assert(x, "static assert failed!")
|
||||
#elif defined(__cplusplus) && __cplusplus >= 201103L
|
||||
# define STATIC_ASSERT(x) static_assert(x, "static assert failed!")
|
||||
#else
|
||||
# define STATIC_ASSERT(x) \
|
||||
do { \
|
||||
struct __staticAssertStruct__ { \
|
||||
char __static_assert_failed__[2*(x) - 1]; \
|
||||
}; \
|
||||
} while (false)
|
||||
#endif
|
||||
|
||||
#if KDEBUG
|
||||
# define KDEBUG_ONLY(x) x
|
||||
|
Loading…
x
Reference in New Issue
Block a user