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

时间:2012-12-15 15:28:44

标签: c c11 restrict restrict-qualifier

从C11草稿:

  

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

此处restrict限定符的用途是什么?

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

1 个答案:

答案 0 :(得分:5)

有几个全局变量具有类型FILE*,例如stdoutstderr。因此,最左边的restrict清楚地表明这些都不能返回,返回的FILE*不会与其他任何别名相同。第二个restrict提供相同的保证但更高一级,您不能在该函数中传递&stderr之类的内容。 (好stderr不一定是通常意义上的变量,但我希望你能看到这张照片。)