Использование struct timeval в Python

У меня есть программа на C, содержащая структуру

struct S{
           int x;
           struct timeval t;
 };

и функция

int func(struct S s1, struct S s2)

Мне нужно вызвать эту функцию из моей программы на Python. Я использую ctypes. Параллельная структура на Python

import ctypes
from ctypes import *
class S(Structure):
        _fields_ = [("x",c_int),
                     ("t", ?)]

Теперь мой вопрос: что я напишу в? место и любые зависимости, связанные с ним. Заранее спасибо.

2 ответа

Решение

Найти определение struct timeval в C-файлах вашей платформы (интернет предлагает sys/time.h), а затем перекодировать это в структуру ctypes.

На моей платформе struct timeval является

struct timeval {
  long tv_sec;
  long tv_usec;
};

(и я полагаю, что это стандарт в любом случае), так

class timeval(Structure):
    _fields_ = [("tv_sec", c_long), ("tv_usec", c_long)]

class S(Structure):
    _fields_ = [("x",c_int), ("t", timeval)]

вероятно, будет отвечать всем требованиям.

Без какой-либо дополнительной информации, это будет определение timeval:

class timeval(Structure):
    _fields_ = [("tv_sec",c_long),
                 ("tv_usec", c_long)]

class S(Structure):
    _fields_ = [("x",c_int),
                 ("t", timeval)]
Другие вопросы по тегам