diff -r b0087e17cd5e Doc/extending/newtypes.rst --- a/Doc/extending/newtypes.rst Fri Jul 01 17:57:30 2016 +0300 +++ b/Doc/extending/newtypes.rst Thu Jul 07 14:15:41 2016 -0400 @@ -52,11 +52,15 @@ } noddy_NoddyObject; This is what a Noddy object will contain---in this case, nothing more than what -every Python object contains---a refcount and a pointer to a type object. +every Python object contains---a field called ``ob_base`` of type :c:type:`PyObject`. +PyObject in turn, contains a refcount and a pointer to a type object. These can +be accessed using the macros :c:macro:`Py_TYPE` and :c:macro:`Py_REFCNT`. These are the fields the ``PyObject_HEAD`` macro brings in. The reason for the macro is to standardize the layout and to enable special debugging fields in -debug builds. Note that there is no semicolon after the ``PyObject_HEAD`` -macro; one is included in the macro definition. Be wary of adding one by +debug builds. More information can be found on the :c:type:`PyObject` type page. + +Note that there is no semicolon after the ``PyObject_HEAD`` macro; +one is included in the macro definition. Be wary of adding one by accident; it's easy to do from habit, and your compiler might not complain, but someone else's probably will! (On Windows, MSVC is known to call this an error and refuse to compile the code.)