.\" @N
.\" @STR
.\" @GLUE
+.\" @STATIC_ASSERT
.\" @DISCARD
.\" @IGNORE
.\" @DEPRECATED
.\" @MUFFLE_WARNINGS_DECL
.\" @MUFFLE_WARNINGS_EXPR
.\" @MUFFLE_WARNINGS_STMT
-.\" @GCC_VERSION_P
.\" @GCC_WARNING
.SH SYNOPSIS
.nf
.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 ");"
.BI "MUFFLE_WARNINGS_EXPR(" warns ", " expr ")"
.BI "MUFFLE_WARNINGS_STMT(" warns ", " stmt ")"
-.BI "int GCC_VERSION_P(" maj ", " min ");"
.BI "GCC_WARNING(" option ")"
.BI "CLANG_WARNING(" option ")"
.fi
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
The
.B CLANG_WARNING
is similar, except that it works with the Clang compiler.
+.PP
+Note that including
+.B <mLib/macros.h>
+also defines the compiler-test macros in
+.BR <mLib/compiler.h>;
+see
+.BR compiler (3).
.SH "SEE ALSO"
-.BR mLib (3).
+.BR mLib (3),
+.BR compiler (3).
.SH "AUTHOR"
Mark Wooding, <mdw@distorted.org.uk>