.\" @N
.\" @STR
.\" @GLUE
+.\" @STATIC_ASSERT
.\" @DISCARD
.\" @IGNORE
.\" @DEPRECATED
.BI "size_t N(" array ");"
.BI "STR(" tokens\fR... ")"
.BI "GLUE(" tokens\fR... ", " tokens\fR... ")"
+.BI "STATIC_ASSERT(" cond ", " msg ");"
.BI "void DISCARD(" scalar ");"
.BI "void IGNORE(" variable ");"
preprocessing token.
.PP
The
+.B STATIC_ASSERT
+causes compilation to fail if the integer constant expression
+.I cond
+evaluates to zero. This macro uses the C11
+.B static_assert
+declaration if available, and the
+.I msg
+will be reported in the compiler's diagnostic messsage; otherwise, the macro
+falls back to a somewhat ugly hack which currently ignores the
+.IR msg .
+.PP
+The
.B DISCARD
macro discards its argument, which must be of some scalar type. This
can be useful in muffling warnings about ignoring return codes in cases