c - tmpfile_s 中限制的目的是什么?

标签 c c11 restrict restrict-qualifier

来自 C11 草案:

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

restrict 限定词的目的是什么?

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

最佳答案

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

关于c - tmpfile_s 中限制的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13893485/

相关文章:

c - 如何改进sin/cos lut函数?

c - 是否有一个内部函数可以将 __m128i vector 的最后 n 个字节清零?

C、进程、fork

c - 使用 gcc 而不是使用 clang 在 for 循环错误中分配结构

对 C 限制限定符感到困惑

c++ - 用 GCC 编译时还需要使用 -fPIC 吗?

c - 结构体数组的最短路径

c - C 标准翻译限制规范中的 "At least one"

c++ - 为什么 clang 会忽略 __restrict__?

ruby-on-rails - 将类代码添加到事件管理仪表板