C++ 持久性的后果(大/小)
我正在开发只在windows上运行的程序,从windows xp到windows 10。使用MFC。我是否必须关心持久性问题。将有许多结构转换为字节数组,并从文件中写入和读取C++ 持久性的后果(大/小),c++,mfc,C++,Mfc,我正在开发只在windows上运行的程序,从windows xp到windows 10。使用MFC。我是否必须关心持久性问题。将有许多结构转换为字节数组,并从文件中写入和读取 typedef struct { int Userid; __int64 StartDate; __int64 EndDate; int DaysLeft; WCHAR Email[2
typedef struct
{
int Userid;
__int64 StartDate;
__int64 EndDate;
int DaysLeft;
WCHAR Email[256];
WCHAR Serial[256];
WCHAR UserApplied[229];
WCHAR Country[256];
WCHAR Address[256];
}RecordInfo;
持久性(大/小)的后果是什么。C++中是否有编写Endiad无关代码的指南。或者,如果它只适用于单一平台(如仅适用于windows),则不必担心endian问题 为您找到。所有Windows系统都是little-endian,因此仅Windows程序没有问题。不同的编译器对数据对齐和结构填充也有不同的规则。使用Visual Studio创建所有程序以避免这些问题。@BarmakShemirani谢谢你,我更担心
Userid
和StartDate
之间的填充。这里最简单的修复方法是:在DaysLeft
之后移动UserId
@MSalters结构的排列顺序是什么,这样就不会出现填充问题。正如您所建议的,在daysleft之后移动userid。我的程序中有许多结构,因此需要将所有结构按正确顺序排列。为您找到。所有Windows系统都是little endian,因此仅Windows程序没有问题。不同的编译器对数据对齐和结构填充也有不同的规则。使用Visual Studio创建所有程序以避免这些问题。@BarmakShemirani谢谢你,我更担心Userid
和StartDate
之间的填充。这里最简单的修复方法是:在DaysLeft
之后移动UserId
@MSalters结构的排列顺序是什么,这样就不会出现填充问题。正如您所建议的,在daysleft之后移动userid。我的程序中有很多结构,所以需要将所有结构按正确的顺序排列。