From: Jens Axboe Date: Mon, 20 Oct 2014 16:51:24 +0000 (-0600) Subject: Add some build assert macros X-Git-Tag: fio-2.1.14~49 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=029716a2f67245a6aad59cf8b52261fa39c8a07f Add some build assert macros Stolen from the linux kernel. Signed-off-by: Jens Axboe --- diff --git a/compiler/compiler.h b/compiler/compiler.h index e1afcb42..40e857c0 100644 --- a/compiler/compiler.h +++ b/compiler/compiler.h @@ -33,4 +33,26 @@ 1; \ }) +#ifndef __compiletime_error +#define __compiletime_error(message) +#endif +#ifndef __compiletime_error_fallback +#define __compiletime_error_fallback(condition) do { } while (0) +#endif + +#define __compiletime_assert(condition, msg, prefix, suffix) \ + do { \ + int __cond = !(condition); \ + extern void prefix ## suffix(void) __compiletime_error(msg); \ + if (__cond) \ + prefix ## suffix(); \ + __compiletime_error_fallback(__cond); \ + } while (0) + +#define _compiletime_assert(condition, msg, prefix, suffix) \ + __compiletime_assert(condition, msg, prefix, suffix) + +#define compiletime_assert(condition, msg) \ + _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__) + #endif