一个对象 foo
被写入到平台 1 上的一个新文件中:
write( file, &myFoo, sizeof(struct foo) );
...然后在平台 2 上阅读:
read(file, &myFoo, filesize(file) );
foo
对象具有以下定义:
struct foo
{
char a;
int b;
long c;
char* d;
};
在平台 2 上加载 foo
时可能会出现什么样的问题?
最佳答案
各种问题!
我们不知道 char
、int
、long
或 char*
的大小是否相同不同的平台。
d 指向的东西发生了什么?
成员之间也可能存在填充,这可能因平台而异。大端和小端系统将以不同的顺序存储整数和指针的字节。如果你真的不走运,可能还有一个中端系统。
关于C++ 平台兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6170543/