使用union来解释多个IP地址?

时间:2010-07-16 08:45:21

标签: c++ unions

在工作中,我们使用以下构造来将IP地址解释为4字节的数组或32位整数:

union IPv4
{
    std::uint32_t ip;
    std::uint8_t  data[4];
};

这很好用,但是在阅读了第97章“不要使用工会来重新解释表达”这本书C++ coding standards之后,我有点担心。书中的例子虽然更加阴险,但我不确定它是否适用于我的代码。

我的代码是否存在任何潜在问题?

2 个答案:

答案 0 :(得分:3)

根据标准,读取除最后一个之外的联合成员是未定义的行为。联合会旨在节省空间,不用于数据类型转换。也就是说,你正在做的事情可能适用于所有主流平台和编译器。

答案 1 :(得分:0)

没问题,因为表示方式与您只是访问方式相同。