我浏览了一些文档和问题/答案,看到有人提到它.我读了一篇简短的描述,说这基本上是程序员的promise ,指针不会被用来指向其他地方.
有人能提供一些实际的 case ,说明它值得实际使用吗?
我浏览了一些文档和问题/答案,看到有人提到它.我读了一篇简短的描述,说这基本上是程序员的promise ,指针不会被用来指向其他地方.
有人能提供一些实际的 case ,说明它值得实际使用吗?
restrict
表示指针是访问底层对象的唯一对象.它消除了指针别名的可能性,使编译器能够更好地进行优化.
例如,假设我有一台机器,它有专门的指令可以将内存中的数字矢量相乘,并且我有以下代码:
void MultiplyArrays(int* dest, int* src1, int* src2, int n)
{
for(int i = 0; i < n; i++)
{
dest[i] = src1[i]*src2[i];
}
}
如果dest
、src1
和src2
重叠,编译器需要正确处理,这意味着它必须从开始到结束一次执行一个乘法.有了restrict
,编译器就可以自由地使用向量指令优化代码.
维基百科上有一个关于restrict
的词条,还有另一个例子,here.