From C11 draft:
C11 (n1570), § K.3.5.1.1 The
tmpfile_sfunctionerrno_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