只是想知道:当我向一个指针添加restrict时,我告诉编译器该指针不是另一个指针的别名。假设我有一个函数,如下所示:
// Constructed example
void foo (float* result, const float* a, const float* b, const size_t size)
{
for (size_t i = 0; i < size; ++i)
{
result [i] = a [0] * b [i];
}
}
如果编译器必须假设result
可能与a
重叠,则每次都必须重新获取。但是,由于a
被标记为const
,编译器也可以假设a是固定的,因此只取一次就可以了。
问题是,在这种情况下,推荐使用restrict的方式是什么?我当然不希望编译器每次都重新获取a
,但是我找不到关于restrict
在这里应该如何工作的好信息。
https://stackoverflow.com/questions/457441
复制相似问题