From: Felix Fietkau Date: Tue, 1 Jan 2013 15:10:27 +0000 (+0100) Subject: utils: add BUILD_BUG_ON (similar to the one in the linux kernel) X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=7157c3a4df70965c5652f957ebdbbe116260d480;p=oweals%2Flibubox.git utils: add BUILD_BUG_ON (similar to the one in the linux kernel) Signed-off-by: Felix Fietkau --- diff --git a/utils.h b/utils.h index d1a6cd3..a86894a 100644 --- a/utils.h +++ b/utils.h @@ -38,4 +38,18 @@ void *__calloc_a(size_t len, ...); #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) #endif +#define __BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)])) + +#ifdef __OPTIMIZE__ +extern int __BUILD_BUG_ON_CONDITION_FAILED; +#define BUILD_BUG_ON(condition) \ + do { \ + __BUILD_BUG_ON(condition); \ + if (condition) \ + __BUILD_BUG_ON_CONDITION_FAILED = 1; \ + } while(0) +#else +#define BUILD_BUG_ON __BUILD_BUG_ON +#endif + #endif