New submission from Thorsten Behrens <sbehr...@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: d...@python
components: Documentation
messages: 124667
nosy: d...@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 <rep...@bugs.python.org>
<http://bugs.python.org/issue10773>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to