fwrite 是可移植的吗?我并没有真正面临下面描述的问题,但我想了解 C 的基础知识。
以免假设我们有两台机器 A8(字节 = 8 位)和 B16(字节 = 16 位)。
下面的代码会在两台机器上产生相同的输出吗?
unsigned char[10] chars;
...
fwrite(chars,sizeof(unsigned char),10,mystream);
我猜 A8 将产生 80 位(10 个八位字节),而 B16 将产生 160 位(20 个八位字节)。我错了吗?
如果仅使用 uintN_t 类型,则不会出现此问题,因为它们的位长度与字节大小无关。但也许 uint8_t 不会在 B16 上存在。
这个问题的解决方案是什么?
我想构建一个 uint32_t 数组,将我的字节放入这个数组中(根据机器的架构使用智能移位和掩码)并编写这个数组将解决问题。但这并不令人满意。再次假设 uint32_t 存在于所有平台上。这个数组的填充将非常依赖于当前机器的架构。
感谢您的任何回复。