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

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.

主站蜘蛛池模板: 卢龙县| 柘城县| 嘉祥县| 将乐县| 余姚市| 明光市| 江口县| 沧源| 连南| 永靖县| 江津市| 桑植县| 盱眙县| 饶阳县| 石林| 江口县| 定安县| 六枝特区| 修文县| 鄂温| 望城县| 虎林市| 扎囊县| 宜春市| 温泉县| 蛟河市| 松滋市| 台南市| 禄丰县| 武邑县| 安图县| 清新县| 玉田县| 鄂托克旗| 庐江县| 云梦县| 凯里市| 哈巴河县| 芜湖市| 南华县| 古浪县|