Ich erweitere Python mit etwas C++ Code.Python zu C/C++ const char Frage
Eine der Funktionen Ich verwende hat die folgende Signatur:
int PyArg_ParseTupleAndKeywords(PyObject *arg, PyObject *kwdict,
char *format, char **kwlist, ...);
(Link: http://docs.python.org/release/1.5.2p2/ext/parseTupleAndKeywords.html)
Der Parameter von Interesse ist kwlist. Im obigen Link finden Sie Beispiele zur Verwendung dieser Funktion. In den Beispielen kwlist wie folgt aussieht:
static char *kwlist[] = {"voltage", "state", "action", "type", NULL};
Wenn ich diese mit g ++ kompiliert, erhalte ich die Warnung:
warning: deprecated conversion from string constant to ‘char*’
Also, ich kann die statische char * zu einem statischen const char * ändern. Leider kann ich den Python-Code nicht ändern. Mit dieser Änderung bekomme ich einen anderen Kompilierungsfehler (kann char ** nicht in const char ** umwandeln). Basierend auf dem, was ich hier gelesen habe, kann ich Compiler-Flags aktivieren, um die Warnung zu ignorieren, oder ich kann jede der konstanten Zeichenfolgen in der Definition von kwlist in char * umwandeln. Momentan mache ich Letzteres. Was sind andere Lösungen?
Entschuldigung, wenn diese Frage schon einmal gestellt wurde. Ich bin neu.
Ich bin mir ziemlich sicher, PyArg_ParseTupleAndKeywords() erwartet nicht, kwlist zu ändern. Ihr Vorschlag ist hilfreich. Vielen Dank. – Eugene