.\" @STR
.\" @GLUE
.\" @STATIC_ASSERT
+.\" COMMA
+.
.\" @ISALNUM
.\" @ISALPHA
.\" @ISASCII
.\" @TOASCII
.\" @TOLOWER
.\" @TOUPPER
+.
.\" @MEMCMP
.\" @STRCMP
.\" @STRNCMP
+.
.\" @DISCARD
.\" @IGNORE
+.\" @LAUNDER
+.\" @RELAX
+.
.\" @DEPRECATED
-.\" @EXECL_LIKE
.\" @IGNORABLE
.\" @MUST_CHECK
.\" @NORETURN
.\" @PRINTF_LIKE
.\" @SCANF_LIKE
+.\" @EXECL_LIKE
+.
.\" @MUFFLE_WARNINGS_DECL
.\" @MUFFLE_WARNINGS_EXPR
.\" @MUFFLE_WARNINGS_STMT
.PP
The
.B STATIC_ASSERT
-causes compilation to fail if the integer constant expression
+macro causes compilation to fail if the integer constant expression
.I cond
evaluates to zero. This macro uses the C11
.B static_assert
.IR msg .
.PP
The
+.B COMMA
+macro expands to a comma
+.BR ` , ',
+which is useful for smuggling commas into macro arguments
+if they can't be protected by parentheses.
+.PP
+The
.BR IS ...\&
and
.BR TO ...\&
.B IGNORE
macro ignores its argument, which may be an expression of any type.
This can be useful in muffling warnings about unused variables.
+.PP
+The
+.B LAUNDER
+macro tries to confuse a compiler so that it `forgets' what it knows
+about a particular value. This is most useful in benchmarking or
+similar applications.
+.PP
+The
+.B RELAX
+macro tries do nothing, but in a way that a compiler won't optimize
+away.
.
.SS Annotations
The following annotations can be attached to function declarations and