【发布时间】:2018-11-23 07:26:41
【问题描述】:
我刚好看到printf(和其他fprintf类函数)的原型——
int printf(const char * restrict format, ...);
如果我理解正确,关键字restrict 不允许通过两个指针访问同一对象,如果其中一个指针标记为restrict。
从 C 标准中引用相同内容的示例是 here。
我认为将格式标记为restrict 的一个好处是可以避免函数在执行过程中被修改格式字符串(比如说因为%n 格式说明符)。
但这会施加更大的限制吗?这是否会使以下函数调用无效?
char format[] = "%s";
printf(format, format);
因为这里显然有一个别名。为什么restrict 关键字被添加到printf 的format 参数中?
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。