【发布时间】:2020-04-15 15:59:25
【问题描述】:
article 提到:
可以将受限制的指针从一个复制到另一个以创建指针层次结构。但是,C99 标准中定义了一个限制。子指针不得与父指针位于同一块级范围内。在同一块级范围内复制受限指针的结果是未定义的。
然后它提供了一个例子:
{
vector3* restrict position = &obj_a->position;
float* restrict position_x = &position->x; <-- UNDEFINED
{
float* restrict position_y = &position->y; <-- VALID
}
}
不过,后面还有一个例子:
void
move( vector3* restrict velocity,
vector3* restrict position,
vector3* restrict acceleration,
float time_step,
size_t count,
size_t stride )
{
float* restrict acceleration_x = &acceleration->x;
float* restrict velocity_x = &velocity->x;
float* restrict position_x = &position->x;
我认为现在受限父指针position 与其子指针position_x 在同一范围内,不是吗?根据我在这篇文章开头引用的段落是不允许的吗?
【问题讨论】:
标签: c gcc c99 restrict-qualifier