在编译一堆与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]
我似乎无法摆脱这种情况。确定这个可能类似于np.import_array()
,它消除了相关警告(实际上required使用Numpy C API),我在顶级尝试了np.import_umath()
,但警告仍然存在。我该如何摆脱它?
(Cython 0.17.4,Numpy 1.6.2。)
答案 0 :(得分:5)
有一个thread on the Cython mailing list可以对此进行一些讨论。我相信讨论涉及Cython测试套件,但我认为相同的想法可以应用于生成的文件。
本质上,该问题涉及为避免C编译器警告未使用的函数而进行的黑客攻击。
code file in question目前看起来像这样:
cdef extern from *:
bint FALSE "0"
void import_array()
# void import_umath()
if FALSE:
import_array()
# import_umath()
过去,import_umath()
部分未被注释,但事实证明,这在使用C ++模式构建时会导致错误。所以it was decided似乎编译器警告比破坏的构建要好得多。
简而言之,为了C ++兼容性,似乎存在此特殊警告,并且可以安全地忽略。我想如果你真的不喜欢它,并且如果你在C模式下构建,那么你可以通过调用{导入类似的.pxi
文件来尝试做同样的黑客攻击{1}}在你的Cython代码中。
答案 1 :(得分:0)
嗯,它说的是,代码中有一个函数,它被声明但未被使用,所以也许它过时了,不应该存在。因为它只是一个警告,而不是非常危险的(除非你会留下很多这样的功能,破坏代码,增加ram使用,二进制大小等)我会忽略它 - 最可能它不值得你的时间;)