【问题标题】:What is this import_umath function?这个 import_umath 函数是什么?
【发布时间】:2013-01-07 17:43:27
【问题描述】:

在编译一堆与 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。)

【问题讨论】:

  • 对于它的价值,我得到了同样的警告。不知道如何解决它。
  • 我有一个Cython post,您或许可以提供见解。

标签: python numpy cython


【解决方案1】:

有一个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 模式下构建,那么你可以尝试通过调用 import_umath() 导入类似的 .pxi 文件来执行相同的 hack在 Cython 代码中。

【讨论】:

  • 我有一个Cython post,您或许可以提供见解。
【解决方案2】:

嗯,它说的是代码中有一个函数,它已声明但未使用,因此它可能已过时且不应该存在。因为它只是一个警告,而且不是很危险(除非你会留下很多这样的功能,破坏代码,增加内存使用,二进制大小等等)我会简单地忽略它 - 很可能它不值得你花时间;)

【讨论】:

  • 我忽略它。但是,我之前也忽略了_import_array,这是一个错误。
猜你喜欢
  • 2020-03-08
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多