如何在cython中声明double const * const *变量?

时间:2019-07-09 08:00:38

标签: const cython

我在“ example.h”中有一个c ++函数:

bool myFunc(double const* const* p);

,我想用cython代码包装(在.pyx文件中)。 但是,当我编写以下代码时:

cdef extern from r"example.h":
    bool myFunc(double const*const* p)

我收到以下错误:

  

编译Cython文件时出错:   预期为“)”,发现为“ *”

和pycharm在double const * const * p上显示此错误:

  

未解决的引用'const'

如何声明这种变量?

1 个答案:

答案 0 :(得分:0)

在C / C ++中,如何进行const限定符的争夺仍在不断:

void foo(const int *a);

void foo(int const *a);

两者含义相同。

在Cython中没有这样的战斗,因为它只接受第一个版本。

适用于double**的上述规则导致:

cdef extern from r"example.h":
    bool myFunc(const double * const* p)

或者作为一种变通办法,可以完全删除const限定符:

cdef extern from r"example.h":
    bool myFunc(const double **p)

在大型项目中,我会(推荐),在确定发生了什么情况时,使用const限定符会很有帮助。