如何在 Cython 中使用空指针

How to use void pointers in Cython

我正在尝试在 Cython 中使用 void 指针,但我不知道如何使用它们。 在 C 我可以这样做:

#include <stdio.h>
int n = 5;
void* ptr = &n;
printf("%d", *(int*)ptr);

并将其转换为 Cython 我尝试同时使用:

from libc.stdio cimport printf
cdef int n = 5
cdef void* ptr = &n
printf("%d", (<int*>ptr))

printf("%d", *(<int*>ptr))

有什么建议吗?

编辑

我能够通过使用 John Bollingers 的回答和使用以下方法解决它:

from cython.operator cimport dereference
from libc.stdio cimport printf
cdef int n = 5
cdef void* ptr = &n
printf("%d", dereference(<int*>ptr))

与 C 不同,Cython does not have a unary * operator。使用数组表示法取消引用指针:

from libc.stdio cimport printf
cdef int n = 5
cdef void *ptr = &n
printf("%d", (<int*>ptr)[0])