如何将constexpr暴露给Cython?

文件Globals.h包含以下常量定义:

namespace MyNameSpace {

/** Constants **/
constexpr index none = std::numeric_limits<index>::max();

}

…其中index是uint64_t的typedef.

如何将其公开给Cython和Python?

失败的尝试:

cdef extern from "../cpp/Globals.h" namespace "MyNamespace":
    cdef index _none "MyNamespace::none"

none = _none

解决方法:

公开(全局)常量的语法类似于syntax for exposing simple attributessyntax for exposing static members,在您的示例中,该语法几乎是正确的,除了需要省略cdef语句,cdef语句仅用于在Cython中声明新变量,而不用于添加有关外部声明的变量的信息.

cdef extern from "../cpp/Globals.h" namespace "MyNamespace":
    index _none "MyNamespace::none"

none = _none

然后,您就可以在Python中不使用它,如果您的Cython模块名为mymodule,则import语句可以是

from mymodule import none

如果您想在Python代码中不提供任何名称作为全局名称.

上一篇:java————数组 简单写出一个管理系统


下一篇:python代码使用cython进行加密