私はいくつかのC++コードでPythonを拡張しています。
私が使用している関数の1つには、次のシグネチャがあります。
int PyArg_ParseTupleAndKeywords(PyObject *arg, PyObject *kwdict,
char *format, char **kwlist, ...);
(リンク:http ://docs.python.org/release/1.5.2p2/ext/parseTupleAndKeywords.html )
対象のパラメーターはkwlistです。上記のリンクでは、この関数の使用方法の例が示されています。例では、kwlistは次のようになります。
static char *kwlist[] = {"voltage", "state", "action", "type", NULL};
g ++を使用してこれをコンパイルすると、次の警告が表示されます。
warning: deprecated conversion from string constant to ‘char*’
したがって、staticchar*をstaticconstchar*に変更できます。残念ながら、Pythonコードを変更することはできません。したがって、この変更により、別のコンパイルエラーが発生します(char**をconstchar **に変換できません)。ここで読んだ内容に基づいて、警告を無視するようにコンパイラフラグをオンにするか、kwlistの定義内の各定数文字列をchar*にキャストできます。現在、私は後者をやっています。他の解決策は何ですか?
この質問が以前に行われたことがある場合は申し訳ありません。私は新しいです。