我正在尝试在Cython中的DEF
预处理器语句中使用IF
。 C中的等效代码是:
#define A 1
#if A == 1
#define B 2
#else
#define B 3
#endif
B
的预期值为2
。但在Cython中它不是。假设
# in Definitions.pxi
DEF A=1
IF A==1:
DEF B=2
print('B should be 2.')
ELSE:
DEF B=3
print('B should be 3.')
在测试文件中:
# In test.pyx
include "Definitions.pxi"
print('B is: %d'%B)
编译:
# In setup.py
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize
setup(name = "test",ext_modules = cythonize(Extension("*",["test.pyx"])))
现在,测试一下:
>>> ipython
In [1]: %reload_ext Cython
In [2]: import test
B should be 2
B is: 3
最后DEF
似乎有效,所有IF
以及ELIF
和ELSE
都会被忽略。这是正常行为还是错误?