【发布时间】:2014-11-08 00:17:18
【问题描述】:
从this question 我了解到匿名结构和联合是 C11 标准的一部分(来自 cmets)。然后我想用bitfield union代替bitmask可能是个好主意,结果发现别人已经发了一个问题并显示an example,和我的想法一模一样。并且该问题的答案同意使用位域联合方法替换位掩码的安全性。但是,据我了解,the post there 的答案否认了访问非活动联合成员的安全性,称访问非活动联合成员是未定义的行为。我觉得这两个问题的答案是矛盾的:
仅使用the example there,修改.user后,.raw的值将变为未定义(通过the post的答案)。所以我觉得用bitfield union方法来替换bitmask是不安全的。
我说的对吗?还是我误解了这些答案?
编辑:如果我的问题的答案对于 C 和 C++ 不同,我希望了解它们。
【问题讨论】:
-
我认为你是对的,我的问题已经解决了。谢谢:) @Mat
标签: c++ c undefined-behavior unions bitmask