Cython中`cdef public:`下两种函数声明有何区别,哪个是真实C函数
Cython .pxd 文件两种函数声明的差异解答
两种写法的本质区别
- 第一种是精简的规范写法
这是Cython块级声明的语法糖:在cdef public: void f()cdef <修饰符>:开头的代码块中,所有块内的C级别声明会自动继承外层的cdef修饰,不需要重复书写。这个声明等效于单独写cdef public void f()。 - 第二种是冗余的兼容写法
这种写法在块内重复添加了cdef public: cdef void f()cdef修饰符,Cython语法解析时会自动合并重复的修饰规则,不会产生额外效果,也不会触发编译错误,只是写法上有冗余,不属于官方推荐的写法。
关于C函数的判定
两种写法声明的都是真正可被外部C代码直接调用的原生C函数,编译后生成的C代码签名、链接属性、调用效率完全一致,没有任何功能上的差异。
内容的提问来源于stack exchange,提问作者Dan D
相关产品推荐
相关产品推荐

