大佬教程收集整理的这篇文章主要介绍了cpython代码dictobject.c中marco`DK_ENTRIES`的含义是什么,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#define DK_ENTRIES(dk) \
((PyDictKeyEntry*)(&((int8_t*)((dk)->dk_inDices))[DK_SIZE(dk) * DK_IXSIZE(dk)]))
任何人都可以解释这个宏,帮助我阅读这个宏以及它的用途是什么?
经过一番挣扎,我在下面找到了一些东西:
typedef struct _Dictkeysobject PyDictKeysObject;
struct _Dictkeysobject {
Py_ssize_t dk_refcnt;
Py_ssize_t dk_size;
Dict_lookup_func dk_lookup;
Py_ssize_t dk_usable;
Py_ssize_t dk_nentries;
char dk_inDices[];
};
注意最后一个元素dk_inDices
,灵活数组成员
简单地说,
DK_SIZE
是结构体中的 dk_size
;
DK_IXSIZE
可以是 1 或 2 或 4 或 8
((int8_t*)((dk)->dk_inDices))[DK_SIZE(dk) * DK_IXSIZE(dk)]
是一个有 n(dk_size*1?) 偏移量的指针
最后返回一个指向PyDictKeyEntry
最后,这个宏返回一个 PyDictKeyEntry
,它有 n(dk_size*1?)
与 dk->dk_inDices
的偏移
以上是大佬教程为你收集整理的cpython代码dictobject.c中marco`DK_ENTRIES`的含义是什么全部内容,希望文章能够帮你解决cpython代码dictobject.c中marco`DK_ENTRIES`的含义是什么所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。