[issue10773] "Building C and C++ Extensions on Windows" documentation shows 2.x way of initializing module
New submission from Thorsten Behrens <sbehrens@gmx.li>: The documentation titled "Building C and C++ Extensions on Windows" at http://docs.python.org/py3k/extending/windows.html shows a Python 2.x way of handling static type object initializers, to whit:
If your module creates a new type, you may have trouble with this line:
PyVarObject_HEAD_INIT(&PyType_Type, 0) Static type object initializers in extension modules may cause compiles to fail with an error message like “initializer not a constant”. This shows up when building DLL under MSVC. Change it to: PyVarObject_HEAD_INIT(NULL, 0) and add the following to the module initialization function: MyObject_Type.ob_type = &PyType_Type;
That last line will not function in Python 3.x. However, PyType_Ready will fill in the ob_type field if it is empty, if I understand PyType_Ready correctly. Therefore, the last few lines of this documentation snippet can become:
and add the following to the module initialization function:
if (PyType_Ready(&MyObject_Type) < 0) return NULL;
---------- assignee: docs@python components: Documentation messages: 124667 nosy: docs@python, thorsten.behrens priority: normal severity: normal status: open title: "Building C and C++ Extensions on Windows" documentation shows 2.x way of initializing module versions: Python 3.1 _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue10773> _______________________________________
Georg Brandl <georg@python.org> added the comment: Thanks, fixed in r87524. ---------- nosy: +georg.brandl resolution: -> fixed status: open -> closed _______________________________________ Python tracker <report@bugs.python.org> <http://bugs.python.org/issue10773> _______________________________________
participants (2)
-
Georg Brandl
-
Thorsten Behrens