在工作中,我们使用以下构造来将 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/