使用Funcptr调用函数,Funcptr是python中struct的成员

时间:2014-03-03 13:15:06

标签: python function-pointers

我有一个结构如下:

class Exprs(Structure):
  _fields_ = [("func",POINTER(CMPFUNC)),
           other members]

CMPFUNC= CFUNCTYPE(ExprArg, POINTER(Exprs), ExprArgList,c_int)// Prototype

是POINTER(Exprs)类型

当我尝试拨打e.contents.func(e, eArgList,0)时,我收到错误

  

LP_CfunctionType对象不可调用

我使用了适当的ctypes投射。请帮我解决这个错误

1 个答案:

答案 0 :(得分:0)

函数原型类型的构造函数直接获取地址。您可能只需要在结构定义中删除POINTER说明符。你所写的内容相当于:

struct Exprs {
    ExprArg (**func)(Exprs *, ExprArgList, int);
};

如果这真的是您想要的,那么请使用e.contents.func.contents(e, eArgList,0)