在Cython

时间:2017-07-18 02:29:44

标签: python cython

我正在尝试在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以及ELIFELSE都会被忽略。这是正常行为还是错误?

0 个答案:

没有答案