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*诸如stdoutstderr例如的类型。所以最左边restrict清楚地表明这些都不能返回,返回的FILE*不会与任何其他别名。第二个restrict提供相同的保证,但更高一级,你不能&stderr在那个函数中传递类似的东西。(嗯stderr,不一定是通常意义上的变量,但我希望你看到图片。)

于 2012-12-15T16:25:36.140 回答