如何将C头文件转换为Python ctypes代码?

2024-10-03 13:27:33 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的c字头

typedef struct _node_t {
int value;
struct _node_t* next;
} node_t;

可以翻译如下。在

^{pr2}$

但是,我不能用void和callback函数翻译c头代码。 我应该如何将下面的c-header转换成Python的c-types代码?在

class PacketHandlerDelegate_D(Structure):
pass

PacketHandlerDelegate_D._fields_ = [
    // Delegate object
    void *delegate;

    // Callback functions
    void (*addSampleToA)(void *delegate, int sample1, int sample2);
    void (*addSampleToB)(void *delegate, unsigned short int signalfast, unsigned short int signalSlow);
    void (*addSampleToC)(void *delegate, char x, char y, char z);
    void (*addSampleToD)(void *delegate, unsigned short int sample);
    void (*addSampleToE)(void *delegate, short int sample);

]


Tags: sample代码nodevaluestructnextintshort
1条回答
网友
1楼 · 发布于 2024-10-03 13:27:33

阅读文档,函数指针类型可以由^{}生成。返回类型voidNone表示。c_void_p可用于空指针。在

例如:

ADD_SAMPLE_TO_B_TYPE = CFUNCTYPE(None, c_void_p, c_ushort, c_ushort)

...

PacketHandlerDelegate_D._fields_ = [
    ...
    (addSampleToB, ADD_SAMPLE_TO_B_TYPE),
    ...
]

另外,由于PacketHandlerDelegate_D中没有递归声明,因此可以在类主体中定义这些声明:

^{pr2}$

相关问题 更多 >