文件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
答案 0 :(得分:3)
公开(全局)常量的语法类似于syntax for exposing simple attributes和syntax for exposing static members,在您的示例中语法几乎正确,除了您需要省略cdef
语句, cdef
语句仅用于在Cython中声明新变量,而不是用于添加有关外部声明变量的信息。
cdef extern from "../cpp/Globals.h" namespace "MyNamespace":
index _none "MyNamespace::none"
none = _none
然后你可以在Python中使用none
,如果您的Cython模块名为mymodule
,则import语句可以是
from mymodule import none
如果您想在Python代码中将none
作为全局名称使用。