From: arighi Date: Thu, 23 Sep 2010 17:30:05 +0000 (+0000) Subject: Introduce STATIC_ASSERT_EXPR() X-Git-Tag: 2.6.0~124 X-Git-Url: https://codewiz.org/gitweb?a=commitdiff_plain;h=245f240a4720c5b2f582842a1cd773dafd8c9f97;p=bertos.git Introduce STATIC_ASSERT_EXPR() STATIC_ASSERT_EXPR() can be used to trigger compile time errors inside a C expression. git-svn-id: https://src.develer.com/svnoss/bertos/trunk@4277 38d2e660-2303-0410-9eaa-f027e97ec537 --- diff --git a/bertos/cfg/compiler.h b/bertos/cfg/compiler.h index e8a76ab1..8c217c00 100644 --- a/bertos/cfg/compiler.h +++ b/bertos/cfg/compiler.h @@ -580,6 +580,13 @@ typedef unsigned char sigmask_t; /**< Type for signal masks. */ #define STATIC_ASSERT(condition) \ UNUSED_VAR(extern char, STATIC_ASSERTION_FAILED__[(condition) ? 1 : -1]) +/** + * Issue a compilation error if \a __cond is false (this can be used inside an + * expression). + */ +#define STATIC_ASSERT_EXPR(__cond) \ + (sizeof(struct { int STATIC_ASSERTION_FAILED__:!!(__cond); }) * 0) + #ifndef ASSERT_TYPE_EQUAL /** Ensure two variables have the same type. */ #define ASSERT_TYPE_EQUAL(var1, var2) \