There are several global variables that are of type FILE* , for example stdout and stderr . Therefore, the leftmost restrict clearly indicates that none of them can be returned, the returned FILE* not an alias with any other. The second restrict makes the same guarantee, but one level higher, you are not allowed to skip something like &stderr in this function. (Well stderr not necessarily a variable in the usual sense, but I hope you see the picture.)
Jens gustedt
source share