From 245f240a4720c5b2f582842a1cd773dafd8c9f97 Mon Sep 17 00:00:00 2001 From: arighi Date: Thu, 23 Sep 2010 17:30:05 +0000 Subject: [PATCH] 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 --- bertos/cfg/compiler.h | 7 +++++++ 1 file changed, 7 insertions(+) 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) \ -- 2.25.1