如果我mmap用来编写uint32_t,我会遇到大端/小端约定的问题吗?特别是,如果我mmap在大端机器上编写一些数据,当我尝试在小端机器上读取数据时会遇到问题吗?
如果您正在使用mmap,您可能会关注速度和效率.你基本上有一些选择.
此外,如果您执行诸如提供长度前缀或文件偏移之类的操作,则可能混合使用32位和64位指针.32位平台无法创建大于4GB的mmap视图,因此您不太可能支持大于4 GB的文件大小.像rrdtool这样的程序采用这种方法,并在64位平台上支持更大的文件大小.这意味着如果您使用文件内部的平台指针大小,则您的二进制文件将不能跨平台兼容.
我的建议是预先忽略所有字节顺序问题,并将系统设计为在您的平台上快速运行.如果/当您需要将数据移动到另一个平台时,请选择最简单/最快/最合适的方法.如果您从尝试创建独立于平台的数据格式开始,通常会犯错误,并且必须在以后修复这些错误.当99%的数据处于正确的字节顺序时,这尤其成问题,并且1%的数据是错误的.这意味着修复数据转换代码中的错误将破坏所有平台上的现有客户端.
在编写代码以支持多个平台之前,您需要进行多平台测试设置.