我正在使用python ctypes模块访问包含一些time_t
字段的C结构。
鉴于其非完全可移植性,我无法静态定义这些字段{.1}}或c_int
类型。
如何定义它们以使我的代码可移植?
示例C结构定义:
c_long
各自的python ctypes结构:
#import <sys/types.h>
#import <time.h>
typedef struct my_struct {
time_t timestap;
uint16_t code;
};
答案 0 :(得分:2)
最好的办法是内省运行脚本的系统,并最好地选择使用哪种整体类型。像,
if sys.platform == 'win32':
time_t = ctypes.c_uint64
# ...
底线是标准中未定义time_t
。这取决于操作系统和编译器。因此,您在Python脚本中对time_t
的定义取决于您正在与之交互的DLL。