如何在 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])
我正在尝试在 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])