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

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

定義上、純関数に対する特定の呼び出しは 1 度だけ評価すれば十分です。純関数の呼び出しの結果は同一の呼び出しの場合に常に同じになることが保証されているので、コード内の 2 回目以降の関数呼び出しは、1 回目の呼び出しの結果で置換できます。
関数を呼び出すときにキーワード __pure を使用すると、関数が純関数であることを示します。
純関数は、定義上、副作用を伴うことはできません。たとえば、グローバル状態にアクセスすると、同じパラメータを使用して関数が 2 回呼び出された場合に同じ値を返す必要があるという規則に違反する可能性があります。そのため、純関数は、グローバル変数の使用またはポインタ経由の間接指定によって、グローバル状態を読み出したり、書き込んだりすることができません。したがって、プログラムで __pure を使用する際は注意が必要です。しかし、関数を __pureとして宣言できる場合は、コンパイラによって共通部分式の削除(CSE)などの強力な最適化が実行されることが少なくありません。
関連する参考文書
10.33 __attribute__((const)) 関数属性
10.48 __attribute__((pure)) 関数属性
5.18 純関数と非純関数の比較
10.13 __pure
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.