小编wan*_*wan的帖子

严格混叠规则是否适用于函数调用?

关于下面的示例,在中f1,不会发生别名,因为pvoid*)无法访问,并且p1是访问内存的唯一指针。但是,p1float*)和p2int*)之间的指针别名在outside之外f1
我的问题是,此别名是否合法,也就是说,严格混叠规则是否适用于函数调用?

如果此示例有效,那么如果f1内联了该怎么办?

void f1(void *p)
{
  auto* p1 = static_cast<float*>(p);
  *p1 = 1.f;
}

int f2()
{
  int x = 1;
  auto* p2 = &x;
  f1(&x);
  *p2 = 1;
  return *p2;
}
Run Code Online (Sandbox Code Playgroud)

c++ strict-aliasing language-lawyer

0
推荐指数
1
解决办法
114
查看次数

标签 统计

c++ ×1

language-lawyer ×1

strict-aliasing ×1