我正在使用 python 访问一个包含一些 time_t
字段的 C 结构 ctypes模块。
鉴于其不完全可移植的特性,我无法将这些字段静态定义为 c_int
或 c_long
类型。
如何定义它们以使我的代码可移植?
示例 C 结构定义:
#import <sys/types.h>
#import <time.h>
typedef struct my_struct {
time_t timestap;
uint16_t code;
};
各自的python ctypes结构:
from ctypes import *
c_time = ? # What do I have to put here?
class MyStruct(Structure):
_fields_ = [
('timestamp', c_time),
('code', c_int16),
]
最佳答案
最好的办法是反省脚本运行的系统,并确定要使用的整数类型。类似的东西,
if sys.platform == 'win32':
time_t = ctypes.c_uint64
# ...
底线是 time_t
没有在标准中定义。这取决于操作系统和编译器。因此,您在 Python 脚本中对 time_t
的定义取决于 DLL/因此您正在与之交互。
关于python - 使用 ctypes 获取 `time_t` 的类型/大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6418221/