代替綴り (ISO646)
ヘッダ ファイル |
iso646.h |
---|---|
規格 | C95 |
概要 | 11 個のマクロを定義する。これらのマクロは、対応するトークンに展開する。フリースタンディング環境で利用可能。 |
ANSI C / C90 以降、ソースコードの記述に使われる文字集合は ASCII (基本・拡張) が標準として想定されています。文字集合が ISO/IEC 646 な環境では iso646.h
をインクルードして 代替綴り でコードを記述する必要があります。
See also:
プラグマ
型
マクロ
!
&
^
|
~
を入力できない場合の代替綴りが定義されています。
代替 | 演算子 | 機能 |
---|---|---|
not | ! | 論理否定演算子 (NOT) |
and | && | 論理積演算子 (AND) |
or | || | 論理和演算子 (OR) |
compl | ~ | ビット論理否定 (NOT) |
bitand | & | ビット論理積 (AND) |
bitor | | | ビット論理和 (OR) |
xor | ^ | ビット排他的論理和 (XOR) |
not_eq | != | 非等価演算子 != (NOT EQUAL) |
and_eq | &= | 複合代入演算子 &= (a = a & b) |
or_eq | |= | 複合代入演算子 |= (a = a | b) |
xor_eq | ^= | 複合代入演算子 ^= (a = a ^ b) |
例えば次のようなコードは、
if ((a==1) && (b==1)) {
...
}
代替綴りを用いて Pascal 風味に書く事ができます。
if ((a==1) and (b==1)) {
...
}
トライグラフ
C 言語が使う記号のうち、ISO/IEC 646 文字コードセットで表せない可能性のある文字は #
[
\
]
^
{
|
}
~
の 10 個あります。これらの文字を代替するためのトライグラフが用意されている事があります。
代替 | 記号 |
---|---|
??= | # |
??( | [ |
??/ | \ |
??) | ] |
??' | ^ |
??< | { |
??! | | |
??> | } |
??- | ~ |
こちらは文字そのものを代替します。文字列リテラル内も代替されるので、
#include <stdio.h>
int main(void)
{
printf("??(Hello,World.??)\n");
return 0;
}
次のような実行結果になります。
[Hello,World.]
Turbo C++ や古い C++Builder はトライグラフを TRIGRAPH.EXE
で処理します。
See also:
引数付きマクロ
関数
資料
- C 言語 / 標準ライブラリ / iso646.h (Wikibooks)
- z/OS C/C++ ランタイム・ライブラリー・リファレンス iso646.h — 演算子用マクロ (IBM)
- C 言語の標準ヘッダ一覧 iso646.h (C 言語)