我正在浏览一些文档和问题/答案并看到它被提及。我读了一个简短的描述,说明这基本上是程序员的 promise ,指针不会用于指向其他地方。
谁能提供一些值得实际使用它的实际案例?
最佳答案
restrict
表示指针是唯一访问底层对象的东西。它消除了指针别名的可能性,使编译器能够进行更好的优化。
例如,假设我有一台带有专门指令的机器,可以将内存中的数字 vector 相乘,并且我有以下代码:
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
,编译器可以自由地使用 vector 指令优化此代码。
维基百科在restrict
上有一个条目,再举一个例子,here .
关于c - C99 'restrict' 关键字的实际用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/745870/