C99restrict
キーワードを正しく取得した場合、ポインターをそれで修飾すると、ポインターが参照するデータが、エイリアシングによってコンパイラーの背後で変更されないことが約束されます。
対照的に、私がconst
修飾子を理解する方法は、特定のオブジェクトがコードを書いている人間の背後で変更されないというコンパイラーによって強制されたドキュメントです。コンパイラーは副作用としてヒントを得るかもしれませんが、プログラマーとして私は本当に気にしません。
restrict
同様の方法で、関数プロトタイプの修飾子を、ユーザーが呼び出し中に排他的アクセスを保証する(「エイリアシングを回避する」、またはおそらくより強力なもの)という要件と見なすのが適切でしょうか?「ドキュメンテーション」として使用する必要がありますか?
restrict
また、(そうであるように)ポインターが指すデータではなく、ポインターを修飾するという事実に理解すべきことがありconst
ますか?
編集:私は当初、それがスレッデッドコードに影響を与える可能性があると信じていrestrict
ましたが、これは間違っているように思われるので、読者を混乱させないように、質問からスレッドへの参照を削除します。