使用ctypes将列表指定为函数指针回调的回调数据

时间:2015-07-10 15:05:11

标签: python ctypes

我有一个c函数如下

void *get_queue_head(void)
char *get_element_name(void *element)
void for_each_element_in_queue(void *head, void (*callback_fn)(void *element, void *user_data), void *user_data)

让 在这个例子中,让我们说我希望callback_fn积累元素的名称

相应的调用将是

def accumlate_element_name(element, element_list):
    element_list.append(ctypes.get_element_name(element)


element_list=[] # create an empty list

def accumulate_all_element_names():
   head=ctypes.get_queue_head()
   for_each_element_in_queue(accumulate_element_name, element_list)

虽然我能够为" for_each_element_in_queue"的第二个参数定义函数指针。是像int这样的简单对象,我无法弄清楚如何传递" generic-list"作为参数,可以通过" python函数"

来解释

0 个答案:

没有答案