在Cython中返回struct的错误值?

时间:2015-08-10 10:14:42

标签: cython

我们可以在Cython中执行此操作,这样每当返回值为-1时,Cython就会生成对PyErr_Occurred()的调用:

cdef int spam() except?-1:

但是,如果返回类型是结构怎么办?

ctypedef struct A:
    double x
    double y

cdef A spam() except ?????

说,我想将错误值定义为:A(x=1, y=-1)。有可能吗?

2 个答案:

答案 0 :(得分:0)

根据文档,这可能是不可能的。

可以在cython文档的Error return values部分的末尾找到此说明

  

异常值只能为返回整数,枚举,浮点或指针类型的函数声明,并且值必须是常量表达式。 Void函数只能使用except *形式。

答案 1 :(得分:0)

您无法指定错误值,但您可以通过编写

来传播错误
= delete

将隐式使用cdef A spam() except *: [code that may raise exceptions] 宏而不是返回值来确定是否发生错误。