【发布时间】:2012-04-02 13:42:39
【问题描述】:
此代码是否违反严格别名?
struct {int x;} a;
*(int*)&a = 3
更抽象地说,只要原始读/写操作类型正确,在不同类型之间进行强制转换是否合法?
【问题讨论】:
-
V-tables 可能排在第一位,所以这是 UB 领域。
-
@ildjarn,C 中不存在 vtables
-
@bdonlan :这也被标记为
c++。 ;-] -
你为什么需要这样的东西?只需
&a.x。 -
编译器优化后的代码才会这样。我知道
a.x语法。 :)
标签: c++ c language-lawyer reinterpret-cast strict-aliasing