7

C11ドラフトから:

C11(n1570)、§K.3.5.1.1tmpfile_s関数
errno_t tmpfile_s(FILE * restrict * restrict streamptr);

restrictここでの修飾子の目的は何ですか?

他にパラメータがないので、コンパイラはそれがないとstreamptrエイリアスされていないことを知ることができrestrictますね。

4

1 に答える 1

5

たとえば、FILE*などのタイプを持つグローバル変数がいくつかあります。したがって、左端は、これらのいずれも返すことができないことを明確に示しており、返されたものは他のものとエイリアスしません。2つ目は同じ保証をしますが、1レベル高く、その関数のようなものを渡すことは許可されていません。(通常の意味では必ずしも変数ではありませんが、画像をご覧いただければ幸いです。)stdoutstderrrestrictFILE*restrict&stderrstderr

于 2012-12-15T16:25:36.140 に答える