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