mesa: add STATIC_ASSERT() macro for compile-time assertions

This can be used to check that tables have the right number of entries,
etc. at compile-time.  This will hopefully catch things that are missed
if particular drivers aren't tested, for example.

v2: Simplify the macro to omit the extra line number info (the compiler
already indicates the line number).  And wrap the macro for readability.
This commit is contained in:
Brian Paul
2011-11-28 18:13:43 -07:00
parent 25c8a112ab
commit 15be8b4bf0
+12
View File
@@ -310,6 +310,18 @@ static INLINE GLuint CPU_TO_LE32(GLuint x)
#endif
#endif
/**
* Static (compile-time) assertion.
* Basically, use COND to dimension an array. If COND is false/zero the
* array size will be -1 and we'll get a compilation error.
*/
#define STATIC_ASSERT(COND) \
do { \
typedef int static_assertion_failed[(!!(COND))*2-1]; \
} while (0)
#if (__GNUC__ >= 3)
#define PRINTFLIKE(f, a) __attribute__ ((format(__printf__, f, a)))
#else