这就是我用高级编程语言宠爱自己的结果。
我有一个函数,可以将 32 位值写入缓冲区,并将 uint64_t
写入堆栈。下面的代码是一种合理的存储方式吗?
uint64_t size = 0;
// ...
getBytes((uint32_t*)&size+0x1);
我假设这将是规范的、安全的风格:
uint64_t size = 0;
// ...
uint32_t smallSize;
getBytes(&smallSize);
size = smallSize;
最佳答案
没有。它只能在大端机器上正常工作。假设一个特定的字节顺序——甚至没有先检查它——是不明智的。
即使您确定您的程序现在只能在大端机器上运行,您也永远不会知道它将来是否必须在小端机器上运行。 (我在一家使用大端处理器数十年的公司生产的计算机上写这篇文章,然后在几年前切换到小端处理器,现在在某些设备中使用双端处理器也非常成功;- ))
关于c - 操纵变量的地址来存储较小的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2993063/