囧死,这是个数据对齐有关问题或者

囧死,这是个数据对齐问题或者?
    最近写东西,在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也行啊。