我总是不确定,restrict 关键字在 C++ 中是什么意思?
这是否意味着给函数的两个或多个指针不重叠?
还有什么意思?
最佳答案
Christer Ericson 在他的论文 Memory Optimization 中说,虽然 restrict
还不是 C++ 标准的一部分,但许多编译器都支持它,他建议在可用时使用它:
在支持它的 C++ 编译器中,它的行为应该与在 C 中相同。
有关详细信息,请参阅此 SO 帖子:Realistic usage of the C99 ‘restrict’ keyword?
花半个小时浏览 Ericson 的论文,这很有趣,值得花时间。
编辑
我还发现 IBM 的 AIX C/C++ compiler supports the __restrict__
keyword 。
g++ 似乎也支持这一点,因为以下程序可以在 g++ 上干净地编译:
#include <stdio.h>
int foo(int * __restrict__ a, int * __restrict__ b) {
return *a + *b;
}
int main(void) {
int a = 1, b = 1, c;
c = foo(&a, &b);
printf("c == %d\n", c);
return 0;
}
我还发现了一篇关于使用
restrict
的好文章:Demystifying The Restrict Keyword
编辑2
我看到一篇专门讨论在 C++ 程序中使用限制的文章:
Load-hit-stores and the __restrict keyword
此外,Microsoft Visual C++ also supports the
__restrict
keyword 。关于c++ - C++中的restrict关键字是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/776283/