17

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()これは、関連する警告を取り除く(そして実際にはNumpy C APIを使用するために必要な)に似ているかもしれないと考えてnp.import_umath()、トップレベルで試しましたが、警告は持続します。どうすればそれを取り除くことができますか?

(Cython 0.17.4、Numpy 1.6.2)

4

2 に答える 2

5

Cythonメーリングリストには、これについて少し説明しているスレッドがあります。議論はCythonテストスイートに関するものだったと思いますが、生成されたファイルにも同じ考えを適用できると思います。

本質的に、この問題には、未使用の関数に関するCコンパイラの警告を回避するために行われたハッキン​​グが含まれていました。

問題のコードファイルは現在次のようになっています。

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

if FALSE:
    import_array()
#    import_umath()

以前import_umath()はコメントが付けられていませんでしたが、C++モードでビルドするときにエラーが発生していました。したがって、コンパイラの警告は、ビルドが壊れているよりもはるかに優れていると判断されたようです。

つまり、この特定の警告はC ++互換性のために存在するようであり、無視しても問題ありません。本当に嫌いで、Cモードでビルドしている場合は、Cythonコード内を.pxi呼び出して同様のファイルをインポートすることで、同じハックを試みることができると思います。import_umath()

于 2013-05-06T16:36:29.047 に答える
0

ええと、それが言っていることは、宣言されているが使用されていない関数がコードにあるということです。したがって、おそらくその時代遅れであり、そこにあるべきではありません。それは単なる警告であり、それほど危険ではないので(そのような関数をたくさん残さない限り、コードを壊し、RAMの使用量を増やし、バイナリサイズなど)私は単にそれを無視します-おそらくあなたの時間の価値はありません;)

于 2013-01-18T13:51:40.867 に答える