utils: add a STATIC_ASSERT macro
authorRan Benita <ran234@gmail.com>
Sat, 9 Aug 2014 19:35:24 +0000 (22:35 +0300)
committerRan Benita <ran234@gmail.com>
Sat, 9 Aug 2014 19:42:45 +0000 (22:42 +0300)
It'd be nicer to use C11's static_assert(), but it's easier to roll our
own C99 version using a trick I saw in xv6.

Signed-off-by: Ran Benita <ran234@gmail.com>
src/utils.h

index 51d690e..508435d 100644 (file)
  */
 #define UNCONSTIFY(const_ptr)  ((void *) (uintptr_t) (const_ptr))
 
+#define STATIC_ASSERT(expr, message) do { \
+    switch (0) { case 0: case (expr): ; } \
+} while (0)
+
 static inline bool
 streq(const char *s1, const char *s2)
 {