[Python-Dev] Baffled by PyArg_ParseTupleAndKeywords modification (original) (raw)

Jack Jansen Jack.Jansen at cwi.nl
Fri Feb 10 15:23:07 CET 2006


I keep running into problems with the "const" modifications to
PyArg_ParseTupleAndKeywords() (rev. 41638 by Jeremy).

I have lots of code of the form char *kw[] = {"itself", 0};

if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw,  

CFTypeRefObj_Convert, &itself)) ... which now no longer compiles, neither with C nor with C++ (gcc4, both
MacOSX and Linux). Changing the kw declaration to "const char *kw[]"
makes it compile again.

I don't understand why it doesn't compile: even though the
PyArg_ParseTupleAndKeywords signature promises that it won't change
the "kw" argument I see no reason why I shouldn't be able to pass a
non-const argument.

And to make matters worse adding the "const" of course makes the code
non-portable to previous versions of Python (where the C compiler
rightly complains that I'm passing a const object through a non-const
parameter).

Can anyone enlighten me?

Jack Jansen, <Jack.Jansen at cwi.nl>, http://www.cwi.nl/~jack If I can't dance I don't want to be part of your revolution -- Emma
Goldman



More information about the Python-Dev mailing list