在tmpfile_s中限制的目的是什么?

md5*_*md5 7 c restrict c11 restrict-qualifier

从C11草案:

C11(n1570),§K.3.5.1.1该tmpfile_s功能
errno_t tmpfile_s(FILE * restrict * restrict streamptr);

restrict这里有资格赛的目的是什么?

因为没有其他参数,编译器能够知道streamptr没有别名restrict,不是吗?

Jen*_*edt 5

中有很多的全局变量具有类型FILE*,如stdoutstderr例如.所以最左边restrict清楚地表明这些都不能返回,返回的FILE*不会与其他任何别名相同.第二个提供restrict相同的保证,但更高一级,你不允许传递类似于&stderr该功能的东西.(好吧stderr不一定是通常意义上的变量,但我希望你能看到这张照片.)