官术网_书友最值得收藏!

Typedef and function pointers

The typedef in C/C++ code allows the programmer to give a new name or alias to any type. For example, one could typedef an int to myint. Or you can just simply typedef a struct so that you don't have to refer to the struct with the keyword struct every time. For example, consider this C struct and typedef:

struct foobar {
  int x;
  char * y;
};
typedef struct foobar foobar_t;

In Cython, this can be described by the following:

cdef struct foobar:
    int x
    char * y
ctypedef foobar foobar_t

Note we can also typedef pointer types as below:

ctypedef int * int_ptr

We can also typedef function C/C++ pointers, as follows:

typedef void (*cfptr) (int)

In Cython, this will be as follows:

ctypedef void (*cfptr)(int)

Using the function pointer is just as you would expect:

cdef cfptr myfunctionptr = &myfunc

There is some magic going on here with function pointers as it's simply not safe for raw Python code to directly call a Python function or vice versa. Cython understands this case and will wrap things up for us to make the call safely.

主站蜘蛛池模板: 凌源市| 东源县| 开江县| 哈巴河县| 松桃| 长乐市| 长沙市| 城口县| 四子王旗| 乌兰县| 灵山县| 达尔| 南平市| 米泉市| 蕉岭县| 永嘉县| 甘孜| 邹平县| 雅安市| 盘锦市| 襄樊市| 长岛县| 修武县| 嘉鱼县| 彰化县| 依安县| 开封市| 钟山县| 南木林县| 五寨县| 平阳县| 于都县| 信丰县| 洱源县| 连州市| 东平县| 自贡市| 雅江县| 怀远县| 仙桃市| 绩溪县|