在工作中,我们具有以下构造,可以将IP地址解释为4个字节的数组或32位整数:
union IPv4
{
std::uint32_t ip;
std::uint8_t data[4];
};
Run Code Online (Sandbox Code Playgroud)
这很好用,但是在阅读了本书C ++编码标准的第97章“不要使用并集来重新解释表示形式”之后,我有点担心。本书中的示例更加阴险,我不确定它是否适用于我的代码。
我的代码是否存在任何潜在问题?
根据该标准,读取除最后写入的工会成员之外的工会成员是未定义的行为。并集的设计目的是节省空间,而无需进行数据类型转换。就是说,您正在执行的操作可能会在所有主流平台和编译器上运行。
| 归档时间: |
|
| 查看次数: |
728 次 |
| 最近记录: |