首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

《python源码剖析》c宏定义的有关问题

2012-09-14 
《python源码剖析》c宏定义的问题最近刚开始看《python源码剖析》,里面看到Python源码里 object.h 文件里几个

《python源码剖析》c宏定义的问题
最近刚开始看《python源码剖析》,里面看到Python源码里 object.h 文件里几个宏定义:

C/C++ code
#define _PyObject_HEAD_EXTRA        \    struct _object *_ob_next;    \    struct _object *_ob_prev;#define PyObject_HEAD            \    _PyObject_HEAD_EXTRA        \    Py_ssize_t ob_refcnt;        \    struct _typeobject *ob_type;#define PyObject_HEAD_INIT(type)    \    _PyObject_EXTRA_INIT        \    1, type,

第一个宏定义应该是定义了两个相同类型的指针。

第二个宏定义里:
_PyObject_HEAD_EXTRA  
Py_ssize_t ob_refcnt;  
struct _typeobject *ob_type;
是不是各自等于PyObject_HEA?

第三个宏定义里:
1, type,  
为什么这么写呢?
第三个宏定义什么意思呢?

[解决办法]
用 1 来初始化 ob_refcnt
type 来初始化 ob_type
[解决办法]
#define 就是简单的替换


#define PyObject_HEAD \
_PyObject_HEAD_EXTRA \
Py_ssize_t ob_refcnt; \
struct _typeobject *ob_type;

相当于下面:
 struct _object *_ob_next;
struct _object *_ob_prev; 
 Py_ssize_t ob_refcnt;
struct _typeobject *ob_type;

是不是各自等于PyObject_HEA?不明白你的意思。


[解决办法]
找一段使用宏的代码,展开了看。

热点排行
Bad Request.