return (void *) (p1 - (size_t) p1 % alignment);
}
+#define GL_CONCAT(x,y) x##y
+#define GL_CONCAT2(x,y) GL_CONCAT(x,y)
+#define GL_LINE_CONCAT(x) GL_CONCAT2(x, __LINE__)
/* Verify a requirement at compile-time (unlike assert, which is runtime). */
-#define VERIFY(name, assertion) struct name { char a[(assertion) ? 1 : -1]; }
+#define VERIFY(assertion) \
+ struct GL_LINE_CONCAT(compile_time_assert) { char a[(assertion) ? 1 : -1]; }
/* Like the above, but use an expression rather than a struct declaration.
This macro may be used in some contexts where the other may not. */