c++ - 使用 union 对 IP 地址进行多种解释?

标签 c++ unions

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

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

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

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

最佳答案

根据标准,读取除最后写入的成员之外的 union 成员是未定义的行为。 union 旨在节省空间,而不是用于数据类型转换。也就是说,您所做的可能适用于所有主流平台和编译器。

关于c++ - 使用 union 对 IP 地址进行多种解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3263239/

相关文章:

c++ - 为什么 'declval' 指定为 'add_rvalue_reference<T>::type' 而不是 'T&&' ?

c++ - 如何使用嵌套在没有名称的结构中的c union

C 结构内部 union 内部结构

c - 使用 C 中的结构 union

c++ - 在 C++ MFC 应用程序中绘制图形

c++ - Linux 和 C++ : Easy way to exchange objects between two processes

c++ - mousePressEvent 绑定(bind)不正确?

c++ - 为什么这个程序被三个 C++ 编译器错误地拒绝了?

c - union 的二进制表示

c++ - 变体类型和可变参数模板的转换和输出运算符