A translation unit shall not 
#define or 
#undef
names lexically identical
to keywords,
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])
.