如何将指向struct的指针与NULL进行比较?

时间:2018-03-11 13:47:15

标签: python null cython

我在Cython中有这个:

cdef extern from "lib/bindings.h":
    ctypedef struct parser:
        yyscan_t yyscanner
        ...

相关的C代码:

typedef struct {
    yyscan_t yyscanner;
    ...
} _parser, *parser;

现在,当我尝试:

cdef parser p = ...
if p != NULL:
    ...

得到:

Invalid types for '!=' (parser, void *)

为什么呢? Cython是否误解了parser声明?似乎它并没有理解&#34; <{1}}是指针类型。

1 个答案:

答案 0 :(得分:2)

Cython根本没有读取你的C代码 - 只是盲目地#include相关文件并使用你的Cython ctypedef来了解正在发生的事情。由于您没有在Cython代码中显示指针,因此无法知道parser是指针类型。

正确的声明就像是

cdef extern from "lib/bindings.h":
    ctypedef struct _parser:
        yyscan_t yyscanner
        # ...
    ctypedef _parser* parser