假设TYPE1,TYPE2,TYPE3为typedefs
到structs
,我在C中有一个函数,如下所示:
int dostuff(TYPE1 *arg1, TYPE2 *arg2, TYPE3 *arg3);
该函数检查空指针并正确处理它们。
我使用Swig将其包装在Go中,结果如下:
func Dostuff(arg1 TYPE1, arg2 TYPE2, arg3 TYPE3) {
_swig_i_0 := arg1.Swigcptr()
_swig_i_1 := arg2.Swigcptr()
_swig_i_2 := arg3.Swigcptr()
...
}
如果我传递任何参数的nil,我得到:
panic: runtime error: invalid memory address or nil pointer dereference
并且堆栈跟踪明确指向argx.Swigcptr()
行作为违规者。我很困惑,因为从Swig文档中,它应该允许空指针作为参数,并简单地将它们传递给它们,留下检查底层库代码(这就是我想要的)。我做的事情显然不正确吗?
我正在使用Swig 3.0.6并在Ubuntu上使用1.4.2。