C言語や C++ において、未規定の動作のうち、処理系が動作を選択し、文書化することになっているものです。
未規定の動作とは、とりうる動作の選択肢が複数考えられるが、標準規格としてはどれを選択するかを強制していないものを指します。処理系定義の動作は、その選択権を処理系に与え、その選択をきちんと文書化することを求めたものです。
処理系定義の動作を含んだプログラムは、ほかの処理系では異なる動作になる恐れがありますから、移植の際には注意が必要です。
処理系定義の動作とされている仕様はいたるところにありますし、非常に基礎的な部分にも存在しているため、処理系定義の動作を避けてプログラムは書くことは不可能です。動作は文書化されて保証されているのですから、処理系定義の動作を含んでいることが、プログラムの品質にかかわることはありません。
たとえば、int型などの標準の型の大きさや、使用できる文字コードの種類といったものは処理系定義です。
なお、コンパイラオプションの切り替えや、プラグマを使うといった方法で、処理系定義とされている部分の動作を変更できるようにし、プログラマーに最終的な選択権が委ねられるようになっている場合もあります。
プラグマについては、C言語編第29章で取り上げています。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |