我总是不确定,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/

10-13 08:06