对象foo被写入平台1上的新文件,如下所示:
write( file, &myFoo, sizeof(struct foo) );
Run Code Online (Sandbox Code Playgroud)
...然后使用以下方式在平台2上阅读:
read(file, &myFoo, filesize(file) );
Run Code Online (Sandbox Code Playgroud)
该foo对象具有以下定义:
struct foo
{
char a;
int b;
long c;
char* d;
};
Run Code Online (Sandbox Code Playgroud)
foo在平台2上加载时可能会出现什么问题?
Bo *_*son 12
各种问题!
我们不知道char,int,long或者char*是在不同的平台的大小相同.
d指出的东西发生了什么?
成员之间可能还存在填充,这可能因平台而异.大端和小结束系统将以不同的顺序存储整数和指针的字节.如果你真的不走运,可能还有一个中端系统.
当你这样做时,你需要注意:
char是唯一可以信任的)ASCIIvs EBCDIC?(是的,认真的?)| 归档时间: |
|
| 查看次数: |
377 次 |
| 最近记录: |