SWIG python初始化一个指向NULL的指针

Posted

技术标签:

【中文标题】SWIG python初始化一个指向NULL的指针【英文标题】:SWIG python initialise a pointer to NULL 【发布时间】:2013-11-01 12:23:34 【问题描述】:

在处理 SWIG 模块时,是否可以从 python 端将 ptr 初始化为 NULL?

例如,假设我在 swig 模块 m (_m.so) 中包装了一个 struct track_t,我可以从 python 创建一个指向该结构的指针,如下所示:

import m

track = m.track_t()

这只会在适当的包装函数中为我分配一个 track_t。

然而,我希望能够实现以下目标:

track_t *track = NULL;

但在 python 而不是 C 中,例如从 python 端初始化一个指向 NULL 的指针

我需要这样做,因为这是哈希表 C 实现的要求,我正在使用新的哈希表以 NULL 指针开头

我可以编写一个辅助函数,例如 track_t* create_null_track(),它返回一个 NULL 指针,但我认为可能有更简单的方法?

编辑:

我可以确认辅助函数有效,但我希望有一个内置的方法来执行此操作,因为需要 NULL 指针似乎是一个常见的要求

辅助函数很简单:

track_t* create_null_track(void)

    return NULL;

不确定函数中指定的返回类型信息是否必要,因此更通用的方法可能是:

void* get_null(void)

    return NULL;

也许?

【问题讨论】:

【参考方案1】:

只需使用 python 中的None 来表示空值。

【讨论】:

以上是关于SWIG python初始化一个指向NULL的指针的主要内容,如果未能解决你的问题,请参考以下文章

SWIG Python - 包装一个需要指向结构的双指针的函数

指向 swig(或 Boost::Python)中的成员的指针

swig python wrap c++​​ 指向多态类型的指针向量

swig char ** 作为指向 char * 的指针

SWIG:返回原始指针与共享 ptrs 的向量

指针变量初始化为NULL啥意思