C alternative tokens
C alternative tokens refer to a set of alternative spellings of common operators in the C programming language. They are implemented as a group of macro constants in the C [standard library] in the
iso646.h header. The tokens were created by Bjarne Stroustrup for the pre-standard C++ language and were added to the C standard in a 1995 amendment to the C90 standard via library to avoid the breakage of existing code.The alternative tokens allow programmers to use C language bitwise and logical operators which could otherwise be hard to type on some international and non-QWERTY keyboards. The name of the header file they are implemented in refers to the ISO/IEC 646 standard, a 7-bit character set with a number of regional variations, some of which have accented characters in place of the punctuation marks used by C operators.
The macros
Theiso646.h header defines the following 11 macros as stated below:| Macro | Defined as |
and | && |
and_eq | &= |
bitand | & |
bitor | |
compl | ~ |
not | |
not_eq | |
or | |
or_eq | |
xor | ^ |
xor_eq | ^= |
C++
The above-mentioned identifiers are operator keywords in the ISO C++ programming language and do not require the inclusion of a header file. For consistency, the C++98 standard provided both<iso646.h> and a corresponding <ciso646>. However they both had no effect, being empty. Some compilers, such as Microsoft Visual C++ have, at least in the past, required the header to be included in order to use these identifiers unless a compiler flag is set. The header <ciso646> was deprecated in C++17, and removed in C++20, while <iso646.h> was retained for compatibility with C.