同じ引数を使用して呼び出されたときに同じ結果を返す関数

同じ引数を使用して呼び出されたときに常に同じ結果を返し、グローバルデータを変更しない関数は、純関数と呼ばれます。

定義上、純関数に対する特定の呼び出しは 1 度だけ評価すれば十分です。純関数の呼び出しの結果は同一の呼び出しの場合に常に同じになること保証されているので、コード内の 2 回目以降の関数呼び出しは、1 回目の呼び出しの結果で置換できます。

関数を呼び出すときにキーワード __pure を使用すると、関数が純関数であることを示します。

純関数は、定義上、副作用を伴うことはできません。例えば、グローバル状態にアクセスすると、同じパラメータを使用して関数が 2 回呼び出さた場合に同じ値を返す必要があるという規則に違反する可能性があります。そのため、純関数は、グローバル変数の使用またはポインタ経由の接指定によって、グローバル状態を読み出したり、書き込んだりすることができません。したがって、プログラムで __pure を使用する際は注意が必要です。しかし、関数を __pure として宣言できる場合は、コンパイラによって共通部分式の削除(CSE)などの強力な最適化が実行されることが少なくありません。

Show/hide関連項目

概念
参照

『コンパイラリファレンス』

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0472EJ
Non-ConfidentialID081711