windows 的BUG???????(解决者100分奉上)

thd111 2002-04-17 03:59:13
struct kk{
int a;
char b[10];
int c;
char d;
int e;
}d;

int len = sizeof(d);//理论上应该 len = 23;

len=28;// !!!!!竟然如此各位帮我试试这是怎么回事,是病毒?还是BUG



...全文
70 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
thd111 2002-04-18
  • 打赏
  • 举报
回复
哦,这样的话我明白了,多谢各位的热情帮助,使我顿时明白了许多,^_^
verybigbug 2002-04-18
  • 打赏
  • 举报
回复
应该是吧,比如:MS VC6.0和BCB也是这样的。
thd111 2002-04-18
  • 打赏
  • 举报
回复
TO:verybigbug()
是不是所有的编译器都有这种情况???
wumugulu 2002-04-18
  • 打赏
  • 举报
回复
vc菜单 project->setting

c/c++ code generation 1 Byte

that's OK !!!
verybigbug 2002-04-18
  • 打赏
  • 举报
回复
那他必须按照你的H文件修改为自己的结构体,
或者你提供各种语言的结构体。
  和操作系统无关(我认为),只和编译器相关。
thd111 2002-04-18
  • 打赏
  • 举报
回复
很多用户也许根本就不知道什么协议,只知道发一个数据包过来,这样的话,我这边处理起来不是很麻烦????艾
thd111 2002-04-18
  • 打赏
  • 举报
回复
可问题是都不一定是用C/C++呀,而且连操作系统也不可能一样
verybigbug 2002-04-18
  • 打赏
  • 举报
回复
你写的DLL难道不提供相应的H文件吗?
在H文件中定义好,所有用该DLL的人必须用该H文件。
在H文件中定义好结构体就可以了。
#pragma pack( 1 )
struct kk{
int a;
char b[10];
int c;
char d;
int e;
}d;
#pragma pack(pop)
thd111 2002-04-18
  • 打赏
  • 举报
回复
如果这样做,我从WEB收下来的数据包会不会产生相同的数据包,不同长度的现象??
biergaisi 2002-04-17
  • 打赏
  • 举报
回复
可以用指针呀!
rovoboy 2002-04-17
  • 打赏
  • 举报
回复
这是标准,都要遵守的规范,没有规矩,何以成方圆?
thd111 2002-04-17
  • 打赏
  • 举报
回复
可如果别人用我的DLL,不照这样做,那我不是很麻烦??
Probe1_0 2002-04-17
  • 打赏
  • 举报
回复
这是存贮结构产生的, 不是BUG
int a; //4bit
char b[10]; //12 bit
int c; //4bit
char d; //4bit
int e; //4bit
一共28bit

jishiping 2002-04-17
  • 打赏
  • 举报
回复
自定义的结构如果对结构大小有要求的话,必须显示使用哪种方式对齐。在
这儿,你必须在结构之前加上
#pragma pack(push)
#pragma pack(1)

在结构之后加上
#pragma pack(pop)
zhakewei 2002-04-17
  • 打赏
  • 举报
回复
在vc中,有一个对其方式,并不影响你的应用,可以选择对齐方式,在project setting 中
Lchaos 2002-04-17
  • 打赏
  • 举报
回复
不明白你的意思。如果大家都遵守一定的约定,应该没有什么问题的啊。
thd111 2002-04-17
  • 打赏
  • 举报
回复
5555555555,如果这样的话,我不是很惨,我写了一个DLL,必须严格按位定义,
出现了这样的情况,我的DLL还有什么用???555555555555555,大家说说你们是怎么解决的吧,我很急呀,先谢谢各位了
verybigbug 2002-04-17
  • 打赏
  • 举报
回复
没有问题呀!编译器缺省是4位对齐,所以:
struct kk{
int a;    = 4
char b[10]; = 12 // 4位对齐
int c; = 4
char d; = 4
int e; = 4 // 4位对齐
}d;

sizeof(d) = 4+12+4+4+4 = 28

有什么问题吗??
hyc1980 2002-04-17
  • 打赏
  • 举报
回复
论坛里说过很多了,是结构对齐的问题,不是bug,可以进行性能优化,也可以关了它,好像是什么pack的,找找msdn
Lchaos 2002-04-17
  • 打赏
  • 举报
回复
加上#pragma pack( 1 )再试试?
加载更多回复(1)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧