服务端和客户端软件都是用GCC编译的,运行在Linux上。但是,它们在不同的平台上运行。
假设已经处理了字节顺序,如果我们为每个成员使用固定大小的 stdint 类型,那么通过原始结构是否安全?意思是不特别注意对齐/填充。
编辑: 我们控制服务器和客户端软件。它们由我们使用相同的 gcc 版本编译,即服务器和客户端之间没有不同的 pack 属性。
最佳答案
没有。即使您使用固定大小的整数类型,您的服务器和客户端上的不同版本的 GCC 可能仍然不同意相邻结构成员之间的填充,并且可能不同意整个结构的对齐方式。例如。服务器上的 GCC 使用单字节填充,而客户端上的则不使用。
关于c - 通过服务器和客户端之间的网络传递原始结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23191581/