首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-07-16 
囧死,这是个数据对齐问题或者?最近写东西,在debug下调试完成后,要编译个release来测试下效率,结果出问题了

囧死,这是个数据对齐问题或者?
    最近写东西,在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:
__int64Flag:1;///<标志
__int64Size:23;///<长度
__int64Loc: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也行啊。

热点排行