【发布时间】:2011-09-07 03:08:07
【问题描述】:
我有一个函数可以接收这样的指针数组:
void foo(int *ptrs[], int num, int size)
{
/* The body is an example only */
for (int i = 0; i < size; ++i) {
for (int j = 0; j < num-1; ++j)
ptrs[num-1][i] += ptrs[j][i];
}
}
我想传达给编译器的是指针ptrs[i] 不是彼此的别名,并且数组ptrs[i] 不重叠。我该怎么做?我别有用心是鼓励自动矢量化。
另外,有没有办法在 std::vector 的迭代器上获得与 __restrict__ 相同的效果?
【问题讨论】:
-
重要提示:C++ 标准不支持 C99 中的
restrict限定符——它甚至不是关键字。因此,在 C++ 程序中对restrict的任何使用都依赖于实现扩展
标签: c++ c pointers pointer-aliasing restrict-qualifier