【发布时间】:2016-10-06 21:50:13
【问题描述】:
如果我们将例如 f 和 g 定义为:
void f(const int *restrict a, const int *restrict b, int *c){ ... }
void g(const int * a, const int * b, int *c){ ... }
- 假设 f 和 g 具有等效的实体,从调用者的角度来看它们是否相同?
- 在被调用者中,我们可以对参数做同样的假设吗?
- 编译器有同样的优化机会吗?
如果restrict 是多余的,我希望所有三个答案都是肯定的。
否则,为什么不呢?
不要考虑不良的编程习惯,例如抛弃const 限定符。
【问题讨论】:
-
restrict是一个难以理解的类型限定符,并且具有微妙的影响。建议避免快速选择答案。 (披露我确实在下面有一个答案),因为我非常有兴趣在这个有趣的帖子上看到其他人的答案。 (感谢新人提出的热门问题) -
确实,重复。如果该问题询问
const在int* const restrict a中是否是多余的,这将是一个新的更好的问题
标签: c