Rozszerzam Pythona o kod C++.Python to C/C++ const char question
Jedną z funkcji używam ma następujący podpis:
int PyArg_ParseTupleAndKeywords(PyObject *arg, PyObject *kwdict,
char *format, char **kwlist, ...);
(linku: http://docs.python.org/release/1.5.2p2/ext/parseTupleAndKeywords.html)
Parametr zainteresowania jest kwlist. W powyższym linku podano przykłady korzystania z tej funkcji. W przykładach kwlist wygląda następująco:
static char *kwlist[] = {"voltage", "state", "action", "type", NULL};
Kiedy mogę skompilować to za pomocą g ++, pojawia się ostrzeżenie:
warning: deprecated conversion from string constant to ‘char*’
Więc mogę zmienić statyczne char * do statycznej const char *. Niestety nie mogę zmienić kodu Pythona. Z tą zmianą otrzymuję inny błąd kompilacji (nie mogę przekonwertować char ** na const char **). W oparciu o to, co tu przeczytałem, mogę włączyć flagi kompilatorów, aby zignorować ostrzeżenie lub mogę rzucić każdy z ciągłych ciągów w definicji kwlist do char *. Obecnie robię to drugie. Jakie są inne rozwiązania?
Przepraszam, jeśli wcześniej zadano to pytanie. Jestem nowy.
Jestem prawie pewien PyArg_ParseTupleAndKeywords() nie oczekuje modyfikacji kwlist. Twoja sugestia jest pomocna. Dzięki. – Eugene