文章提到:
受限制的指针可以从一个复制到另一个以创建指针层次结构。但是,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
,不是吗?根据我在本文开头引用的段落是不允许的吗?