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

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.

主站蜘蛛池模板: 潍坊市| 新化县| 金阳县| 绥德县| 德州市| 铁岭县| 娱乐| 河东区| 盐源县| 大化| 南召县| 丹东市| 简阳市| 密云县| 望江县| 凤庆县| 宁蒗| 阆中市| 额尔古纳市| 淳化县| 准格尔旗| 长汀县| 酉阳| 左权县| 新安县| 禹城市| 双城市| 星子县| 邳州市| 上高县| 临邑县| 左权县| 阿图什市| 襄垣县| 滦南县| 石景山区| 宁远县| 安宁市| 仁寿县| 连南| 青海省|