使用ctypes获取`time_t`的类型/大小

时间:2011-06-20 22:16:11

标签: python c struct ctypes

我正在使用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;      
};

1 个答案:

答案 0 :(得分:2)

最好的办法是内省运行脚本的系统,并最好地选择使用哪种整体类型。像,

if sys.platform == 'win32':
    time_t = ctypes.c_uint64
# ...

底线是标准中未定义time_t。这取决于操作系统和编译器。因此,您在Python脚本中对time_t的定义取决于您正在与之交互的DLL。