代码之家  ›  专栏  ›  技术社区  ›  StackedCrooked

使用联合对IP地址进行多种解释?

  •  2
  • StackedCrooked  · 技术社区  · 14 年前

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

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

    这行得通,但我读了这本书的第97章“不要用工会来重新解释”后有点担心。 C++ coding standards . 不过,书中的例子更阴险,我不确定它是否适用于我的代码。

    我的代码有什么潜在的问题吗?

    2 回复  |  直到 12 年前
        1
  •  3
  •   BatchyX    14 年前

    根据标准,读取工会成员而不是最后写入的成员是未定义的行为。联合是为了节省空间而设计的,不用于数据类型转换。也就是说,您所做的工作可能会在所有主流平台和编译器上进行。

        2
  •  0
  •   aggsol    14 年前

    没问题,因为重复销售是相同的,所以您只需以不同的方式访问IST。