In C++, there are eleven keywords which are simply alternate spellings
of operators normally written with punctuation.  These keywords are
treated as such even in the preprocessor.  They function as operators in
#if, and they cannot be defined as macros or poisoned.  In C, you
can request that those keywords take their C++ meaning by including
iso646.h.  That header defines each one as a normal object-like
macro expanding to the appropriate punctuator.
   
These are the named operators and their corresponding punctuators:
| Named Operator | Punctuator
 | 
and     | &&
 | 
and_eq  | &=
 | 
bitand  | &
 | 
bitor   | |
 | 
compl   | ~
 | 
not     | !
 | 
not_eq  | !=
 | 
or      | ||
 | 
or_eq   | |=
 | 
xor     | ^
 | 
xor_eq  | ^=
    |