From 2b7dab2f74f7ebdcc035218a40e44beceae49a15 Mon Sep 17 00:00:00 2001 From: Vladimir Serbinenko Date: Fri, 18 Nov 2022 16:57:06 +0100 Subject: [PATCH] COMMON: Import STATIC_ASSERT --- common/scummsys.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/common/scummsys.h b/common/scummsys.h index 399de75b..1b7e23a5 100644 --- a/common/scummsys.h +++ b/common/scummsys.h @@ -479,5 +479,32 @@ typedef uint16 OverlayColor; #endif +#ifndef STATIC_ASSERT +#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER > 1600) + /** + * Generates a compile-time assertion. + * + * @param expression An expression that can be evaluated at compile time. + * @param message An underscore-delimited message to be presented at compile + * time if the expression evaluates to false. + */ + #define STATIC_ASSERT(expression, message) \ + static_assert((expression), #message) +#else + /** + * Generates a compile-time assertion. + * + * @param expression An expression that can be evaluated at compile time. + * @param message An underscore-delimited message to be presented at compile + * time if the expression evaluates to false. + */ + #define STATIC_ASSERT(expression, message) \ + do { \ + extern int STATIC_ASSERT_##message[(expression) ? 1 : -1]; \ + (void)(STATIC_ASSERT_##message); \ + } while (false) +#endif +#endif + #endif