#define GLUE(x, y) MLIB__GLUE(x, y)
#ifdef static_assert
-# define STATIC_ASSERT(cond, msg) static_assert(cond, msg)
+# define STATIC_ASSERT(cond, msg) static_assert(!!(cond), msg)
#else
# define STATIC_ASSERT(cond, msg) \
IGNORABLE extern char static_assert_failed[2*!!(cond) - 1]
# define IGNORABLE __attribute__((__unused__))
#endif
+#if GCC_VERSION_P(3, 4) || CLANG_VERSION_P(3, 3)
+# define MUST_CHECK __attribute__((__warn_unused_result__))
+#endif
+
#if GCC_VERSION_P(4, 5) || CLANG_VERSION_P(3, 3)
# define DEPRECATED(msg) __attribute__((__deprecated__(msg)))
#elif GCC_VERSION_P(3, 1)
# define IGNORABLE
#endif
+#ifndef MUST_CHECK
+# define MUST_CHECK
+#endif
+
#ifndef GCC_WARNING
# define GCC_WARNING(warn)
#endif