From C11 draft:
C11 (n1570), § K.3.5.1.1 The
tmpfile_s
functionerrno_t tmpfile_s(FILE * restrict * restrict streamptr);
What is the purpose of the restrict
qualifier here?
Because there is no other parameters, the compiler is able to know that streamptr
is not aliased without restrict
, isn't it?
There are several global variables around that have type FILE*
such as stdout
and stderr
for example. So the leftmost restrict
clearly indicates that none of these can be returned, the returned FILE*
doesn't alias with any other. The second restrict
makes the same guarantee but one level higher, you are not allowed to pass something like &stderr
in that function. (Well stderr
is not necessarily a variable in the usual sense, but I hope you see the picture.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With