我已阅读此链接:https://github.com/cython/cython/wiki/FAQ#id35我的Cython 0.20.1应该能够支持const。
但是我的以下代码无法编译:
cdef const double a = 2.5
print(a)
在编译期间,它说
test.pyx:5:5: Assignment to const 'a'
Traceback (most recent call last):
File "setup1.py", line 11, in <module>
ext_modules = cythonize(extensions)
File "X:\WinPython3\python-3.3.5.amd64\lib\site-packages\Cython\Build\Dependencies.py", line 785, in cythonize
cythonize_one(*args[1:])
File "X:\WinPython3\python-3.3.5.amd64\lib\site-packages\Cython\Build\Dependencies.py", line 902, in cythonize_one
raise CompileError(None, pyx_file)
Cython.Compiler.Errors.CompileError: test.pyx
答案 0 :(得分:13)
const
适用于函数参数,但不适用于此构造,因为Cython将其编译为C语言。
cdef double a = 2.5
变为
double __pyx_v_a;
/* lots of other declarations */
__pyx_v_a = 2.5;
这不会与const
变量一起使用。实际上,你不能在Cython的所有地方使用const
,你可以在C中使用它。