gpt4 book ai didi

c - `restrict` 关键字隐含的严格别名级别是多少?

转载 作者:行者123 更新时间:2023-12-02 04:46:21 30 4
gpt4 key购买 nike

我有以下结构:

typedef struct{
int data[LENGTH];
}Data;

然后像这样使用它:

Data* dt=CALLOC(...)

int foo(Data* restrict d){
for(...)
d[i]->data[j];
//do stuff with data[]
}

我的问题是:从 d 中删除严格别名是否也会影响其成员,或者我是否需要分别对它们使用 restrict?换句话说,restrict 是否意味着结构中包含的所有 指针得到相同的处理?

编辑:通过别名级别,我的意思是,如果指向结构的指针被限制,它中包含的任何其他指针是否也会受到限制(就像现在一样)我的例子就是这种情况)。

最佳答案

restrict 仅适用于带注释的指针本身(或从中生成的指针,例如通过指针算术),不适用于通过该指针检索的任何值。

我不确定“严格别名级别”是什么意思,但是 restrict 是比严格别名更强大的 promise 。严格别名允许兼容类型的指针指向别名:restrict promise 根本没有别名。

关于c - `restrict` 关键字隐含的严格别名级别是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19731256/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com