typedef struct
{ 【程序编程相关:VBA for EXCEL FAQ】 【推荐阅读:Windows下多线程编程技术及其实现】 uint32 numelements; 【扩展信息:使用IActiveDesktop对象的一】 union { uint32 objecthandle; }entry; }str_array, *pstr_array;还有这两句#pragma pack(push, 1)
#pragma pack(pop) #pragma pack( [ n ] ) 该指令指定结构与联合成员的紧凑对齐.而一个完整的转换单元的结构与联合 的紧凑对齐由/ z p 选项设置.紧凑对齐用p a c e 编译指示在数据说明层设置.该 编译指示在其出现后的第一个结构或联合说明处生效.该编译指示对定义无效. 当你使用#pragma pack ( n ) 时, 这里n 为1 .2 .4 .8 或1 6 .第一个结构成员之 后的每个结构成员都被存储在更小的成员类型或n 字节界限内.如果你使用无 参量的#pragma pack , 结构成员被紧凑为以/ z p 指定的值.该缺省/ z p 紧凑值为 / z p 8 . 编译器也支持以下增强型语法: #pragma pack( [ [ { p u s h | p o p } , ] [ 标识符, ] ] [ n] ) 若不同的组件使用p a c k 编译指示指定不同的紧凑对齐, 这个语法允许你把程序 组件组合为一个单独的转换单元. 带p u s h 参量的p a c k 编译指示的每次出现将当前的紧凑对齐存储到一个内部编 译器堆栈中.编译指示的参量表从左到右读取.如果你使用p u s h , 则当前紧凑 值被存储起来; 如果你给出一个n 的值, 该值将成为新的紧凑值.若你指定一个 标识符, 即你选定一个名称, 则该标识符将与这个新的的紧凑值联系起来. 带一个p o p 参量的p a c k 编译指示的每次出现都会检索内部编译器堆栈顶的值, 并且使该值为新的紧凑对齐值.如果你使用p o p 参量且内部编译器堆栈是空的, 则紧凑值为命令行给定的值, 并且将产生一个警告信息.若你使用p o p 且指定一 个n 的值, 该值将成为新的紧凑值. 若你使用p o p 且指定一个标识符, 所有存储在堆栈中的值将从栈中删除, 直到找 到一个匹配的标识符, 这个与标识符相关的紧凑值也从栈中移出, 并且这个仅在 标识符入栈之前存在的紧凑值成为新的紧凑值.如果未找到匹配的标识符, 将使 用命令行设置的紧凑值, 并且将产生一个一级警告.缺省紧凑对齐为8 . p a c k 编译指示的新的增强功能让你编写头文件, 确保在遇到该头文件的前后的 紧凑值是一样的. 什么是内存对齐考虑下面的结构:
... 下一页