Windows API中的字节对齐问题?

binbin 2004-04-22 10:31:25
今天突然想到编译器的字节对齐选项是不是会对相关windows api的调用产生影响?
在windows api中有很多需要结构参数,而这些API都是在系统dll中实现的,那么用户程序在编译时选择了不同的对齐方式应该对这些API的调用产生影响吧?那么系统dll内部一般对结构体成员采用什么对齐方式呢?
...全文
38 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wyb_45 2004-04-24
字节对齐一般是在程序里自己定义
struct 结构体时 的sizeof时产生字节对齐的问题
一般是没有问题的
回复
COKING 2004-04-24
楼上!厉害!!!
回复
FengYuanMSFT 2004-04-24
Yes. Window normally assumes DWORD alignment.

Header files in Microsoft SDK do not always enforce that.

One structure which could cause problem is OUTLINETEXTMETRIC in wingdi.h. Read page 599 of my book (Chinese translation)

www.fengyuan.com
回复
NowCan 2004-04-23
举例,Windows.h中,开头有这个一句
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
其中的-a8就是字节对齐,8字节对齐。

然后在最后
#pragma option pop /*P_O_Pop*/
表示上述option到此结束。

回复
thp 2004-04-22
.
回复
yunuo2010000 2004-04-22
学习
回复
binbin 2004-04-22
UP.
回复
jishiping 2004-04-22
看头文件啊。你查一查 #include <pshpackX.h> (这儿的X为1、2、4、8)和#include <poppack.h> 就知道了。有些结构,本身就不受对齐的影响,所以可以不用特别说明。
回复
qiuafa 2004-04-22
up
回复
binbin 2004-04-22
显式的指定了对齐方式,是在头文件中看吗?我在CSDN中没看到,应该怎么看请季头明示,谢谢!
回复
jishiping 2004-04-22
API函数中用到的结构,都已经显式的指定了对齐方式,不受编译参数中的对齐方式影响。
不过BCB6的有关对齐的头文件有问题,所以需要打补丁SP4才行,当然也可以自己修改头文
件。我在2年前就写了一个帖子说明这个问题了,最近又有人提出来了。最近的帖子为:
http://expert.csdn.net/Expert/TopicView1.asp?id=2983941
回复
Maconel 2004-04-22
啥意思,没看懂,举个例子
回复
binbin 2004-04-22
怎么偶问的问题都没人应???
偶开始怀疑是不是偶的脑筋有问题?
回复
发帖
Windows SDK/API
创建于2007-08-02

1204

社区成员

C++ Builder Windows SDK/API
申请成为版主
帖子事件
创建了帖子
2004-04-22 10:31
社区公告
暂无公告