Avoid a "statement has no effect" warning from BUILD_ASSERT.
authorBen Pfaff <blp@nicira.com>
Mon, 26 Jan 2009 18:33:14 +0000 (10:33 -0800)
committerBen Pfaff <blp@nicira.com>
Mon, 2 Mar 2009 20:51:59 +0000 (12:51 -0800)
lib/util.h

index fde681faacc78b1e7122b914c0d61be26984c1b5..cf6cd6b188d1eeecfa94e3b487eac9bfc91ff5df 100644 (file)
 #endif
 
 #ifndef __cplusplus
-/* Build-time assertion for use in a statement context. */
-#define BUILD_ASSERT(EXPR) \
+/* Build-time assertion building block. */
+#define BUILD_ASSERT__(EXPR) \
         sizeof(struct { unsigned int build_assert_failed : (EXPR) ? 1 : -1; })
 
+/* Build-time assertion for use in a statement context. */
+#define BUILD_ASSERT(EXPR) (void) BUILD_ASSERT__(EXPR)
+
 /* Build-time assertion for use in a declaration context. */
 #define BUILD_ASSERT_DECL(EXPR) \
-        extern int (*build_assert(void))[BUILD_ASSERT(EXPR)]
+        extern int (*build_assert(void))[BUILD_ASSERT__(EXPR)]
 #else /* __cplusplus */
 #include <boost/static_assert.hpp>
 #define BUILD_ASSERT BOOST_STATIC_ASSERT