gpt4 book ai didi

python - 如何创建指向正在定义的结构的指针?

转载 作者:行者123 更新时间:2023-11-28 22:05:28 24 4
gpt4 key购买 nike

我正在围绕 getifaddrs() 编写一个 Python 包装器.该接口(interface)使用 struct ifaddrs 类型,其第一个字段是指向另一个 struct ifaddrs 的指针。

struct ifaddrs {
struct ifaddrs *ifa_next; /* Pointer to the next structure. */
... /* SNIP!!11 */
};

但是,用 Python 表示:

class struct_ifaddrs(Structure):

_fields_ = [
('ifa_next', POINTER(struct_ifaddrs)),]

给出这个错误:

matt@stanley:~/src/pydlnadms$ ./getifaddrs.py 
Traceback (most recent call last):
File "./getifaddrs.py", line 58, in <module>
class struct_ifaddrs(Structure):
File "./getifaddrs.py", line 61, in struct_ifaddrs
('ifa_next', POINTER(struct_ifaddrs)),
NameError: name 'struct_ifaddrs' is not defined
在类定义完成之前,

struct_ifaddrs 不会绑定(bind)到当前作用域。当然,作为指针类型,很明显 struct_ifaddrs 的定义在声明时不需要像在 C 中那样,但在以后使用时需要取消引用该类型。我该如何继续?

最佳答案

这个怎么样?

class struct_ifaddrs(Structure):
pass
struct_ifaddrs._fields_ = [
('ifa_next', POINTER(struct_ifaddrs)),]

正如 Paul McGuire 在评论中指出的那样,这在 the ctypes documentation 中记录为此问题的标准解决方案。和 yet another time in the same docs .

关于python - 如何创建指向正在定义的结构的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5281618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com