我已经找了一段时间,但没有找到一个明确的答案。
许多人说,使用联合打字双关是不明确和不好的做法。为什么会这样?我不明白为什么它会做任何未定义的事情,考虑到你写原始信息的内存不会自动改变(除非它超出了栈的作用域,但这不是联合问题,这将是糟糕的设计)。
人们引用严格的别名规则,但在我看来,这就像是说,你不能这样做,因为你不能这样做。
如果不输入双关语,联合又有什么意义呢?我看到一些地方,他们应该使用相同的内存位置,在不同的时间为不同的信息,但为什么不删除之前,再次使用它的信息?
总结:
额外的信息: 我主要使用 C + + ,但是想知道关于它和 C 的信息。具体来说,我使用联合来在浮点数和原始十六进制之间进行转换,并通过 CAN 总线发送。