其他分享
首页 > 其他分享> > 如何将constexpr暴露给Cython?

如何将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代码中不提供任何名称作为全局名称.

标签:cython,python,c-4
来源: https://codeday.me/bug/20191121/2051510.html