A translation unit shall not #define or #undef
names lexically identical
to the identifiers listed in Table 4, or
to the attribute-tokens described in [dcl.attr],
except that the names likely and unlikely may be
defined as function-like macros ([cpp.replace]).
Each name declared as an object with external linkage
in a header is reserved to the implementation to designate that library
object with external linkage,174
both in namespace std and in the global namespace.
Each function signature from the C standard library declared with
is reserved to the implementation for use as
a function signature with both
or as a name of namespace scope in the global namespace.
The list of such reserved function
signatures with external linkage includes
declared or defined in <csetjmp> ([csetjmp.syn]),
declared or defined in
The function signatures declared in
are always reserved, notwithstanding the restrictions imposed in subclause
4.5.1 of Amendment 1 to the C Standard for these headers.