5、结构体定义
我们用 fields = [(‘name1’,type1),(‘name2’,type2)]来表示结构体的成员
字节对齐 C结构体中经常会出现按照指定的字节进行对齐结构体,用pack来指定对齐的字节数,数组的定义直接用 *num 表示个数
C
#pragma pack(1)
structMyStruct
{inta;doubleb;char c[32];
};#pragma pack()
python
classMyStruct(Structure):
_fields_=[
('a',c_int),
('b',c_double),
('c',c_char*32),
]
_pack_= 1
位域
C
structMyStruct1
{int a : 16;int b : 16;
};
python
classMyStruct1(Structure):
_fields_=[
('a',c_int,16),
('b', c_int, 16),
]
结构体的嵌套
c
structMyStruct2
{inta;
MyStruct S[4];
};
classMyStruct2(Structure):
_fields_=[
('a',c_int),
('struct',MyStruct*4)
]
传递结构体,与之前传递参数一样,指针类型用byref或者pointer
c
DLL1_API int fnDLL5(MyStruct &s)
{