我在“ 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'
如何声明这种变量?
答案 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限定符会很有帮助。