# 定义一个包含数组的结构体,数组的长度在创建实例时确定
class DynamicArrayStruct(ctypes.Structure):
_pack_ = 1
_fields_ = [('pro_fix_head', c_ushort),
('src_mac', c_ubyte * 0),
('dsr_mac', c_ubyte * 0),
('module_id', c_ushort),
('cli_crc', c_ushort),
('msg_id', c_uint),
('msg_lenx', c_uint)
]
print(sizeof(DynamicArrayStruct))
def create_dynamic_array_struct(array_length):
# 创建一个适当长度的数组类型
ArrayType = array_length
# 动态地添加数组字段到结构体定义中
class DynamicArrayStructWithLength(DynamicArrayStruct):
_pack_ = 1
_fields_ = [('pro_fix_head', c_ushort),
('src_mac', c_ubyte * ArrayType),
('dsr_mac', c_ubyte * ArrayType),
('module_id', c_ushort),
('cli_crc', c_ushort),
('msg_id', c_uint),
('msg_len', c_uint)
]
# 创建结构体实例
instance = DynamicArrayStructWithLength()
print(sizeof(instance))
return instance