C alternative tokens
C standard library header providing a set of alternative spellings of common operators
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.
01The macros
The <iso646.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 | ^= |
02C++
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.
Sources and credits
This article is adapted from the Wikipedia article “C alternative tokens”, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.
Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.