囧死,这是个数据对齐有关问题或者
囧死,这是个数据对齐问题或者?
最近写东西,在debug下调试完成后,要编译个release来测试下效率,结果出问题了,编译器报c1063错误,去网上查了下说把源文件拆分,于是乎拆了七零八落不亦乐乎,结果编译器固执的报c1063...,而最后报错的地方是:
所以猜测是Link结构的问题
于是乎试着吧后面的:1 :23 :40注释了,好了世界清静了...
可是残酷的现实告诉我,这不能注释,谁能找到解决方案,膜拜~~~
考虑过这是个数据对齐的问题,后来发现也不是,使用
来试着解决,照旧
------解决方案--------------------
把flag,size,loc放在联合中行不?
up了~
------解决方案--------------------
__int64 Flag:1; ///<标志
__int64 Size:23; ///<长度
__int64 Loc:40; ///<地址
==========
std::bitset<1> Flag;
std::bitset<23> Size;
std::bitset<40> Loc;
使用bitset也行啊。
最近写东西,在debug下调试完成后,要编译个release来测试下效率,结果出问题了,编译器报c1063错误,去网上查了下说把源文件拆分,于是乎拆了七零八落不亦乐乎,结果编译器固执的报c1063...,而最后报错的地方是:
size_t sz=link.GetSize();
所以猜测是Link结构的问题
class Link
{
public:
Link(){memset(this,0,sizeof(Link));}
Link(bool f,int sz,__int64 loc)...
private:
__int64 Flag:1; ///<标志
__int64 Size:23; ///<长度
__int64 Loc:40; ///<地址
};
于是乎试着吧后面的:1 :23 :40注释了,好了世界清静了...
可是残酷的现实告诉我,这不能注释,谁能找到解决方案,膜拜~~~
考虑过这是个数据对齐的问题,后来发现也不是,使用
#pragma pack(1)
#pragma pack()
来试着解决,照旧
------解决方案--------------------
把flag,size,loc放在联合中行不?
up了~
------解决方案--------------------
__int64 Flag:1; ///<标志
__int64 Size:23; ///<长度
__int64 Loc:40; ///<地址
==========
std::bitset<1> Flag;
std::bitset<23> Size;
std::bitset<40> Loc;
使用bitset也行啊。