From 029716a2f67245a6aad59cf8b52261fa39c8a07f Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Mon, 20 Oct 2014 10:51:24 -0600 Subject: [PATCH] Add some build assert macros Stolen from the linux kernel. Signed-off-by: Jens Axboe --- compiler/compiler.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) 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 -- 2.25.1