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' `^='Created Mon Nov 8 17:42:11 2004 on tillpc with info_to_html version 0.9.6.