restrict キーワードは、ポインターの宣言でポインターの型修飾子として主に使用されます。新しい機能は追加されません。コンパイラに可能な最適化について通知します。ポインターに __restrict
を使用すると、ポイントされているオブジェクトにアクセスするにはポインターを使用する必要があることが指定され、コンパイラが追加のチェックを実行する必要はありません。
注記: restrict キーワードを使用しているときに上記の条件に違反すると、動作が不定義のものになります。
次は、ポインターの別の例であり、デフォルトではエイリアシングは実行されません。
図 1. エイリアシングなしの例
パフォーマンスを向上させるため、restrict キーワードを適用します。次に、ほかのポインターとのメモリ依存がない例を示します。
図 2. ほかのポインターとのメモリ依存がない例