这个import_umath函数是什么?

Fre*_*Foo 17 python numpy cython

在编译一堆与Numpy接口的Cython生成的C文件时,我收到警告:

/usr/lib/pymodules/python2.7/numpy/core/include/numpy/__ufunc_api.h:226:1: warning: ‘_import_umath’ defined but not used [-Wunused-function]
Run Code Online (Sandbox Code Playgroud)

我似乎无法摆脱这一点.确定这可能类似于np.import_array(),它消除了相关的警告(并且实际上是使用Numpy C API所必需的),我尝试np.import_umath()了顶级,但警告仍然存在.我怎么摆脱它?

(Cython 0.17.4,Numpy 1.6.2.)

voi*_*hos 5

Cython邮件列表上有一个线程可以讨论这个问题.我相信讨论是关于Cython测试套件的,但我认为相同的想法可以应用于生成的文件.

实质上,该问题涉及为避免C编译器对未使用的函数发出警告而进行的黑客攻击.

有问题的代码文件目前看起来像这样:

cdef extern from *:
   bint FALSE "0"
   void import_array()
#   void import_umath()

if FALSE:
    import_array()
#    import_umath()
Run Code Online (Sandbox Code Playgroud)

在过去,这些import_umath()部分是未被注释的,但事实证明,这在C++模式下构建时会导致错误.因此,似乎确定编译器警告比破坏的构建要好得多.

简而言之,为了C++兼容性,似乎存在这种特殊警告,并且可以安全地忽略.我想如果你真的不喜欢它,如果你在C模式下构建,那么你可以通过.pxi调用import_umath()Cython代码内部的类似文件来尝试做同样的hack .