给出以下C原型函数:
void my_function(POINTER *p);
如何使用SWIG生成一个Python包装器,在调用时:
my_function()—>它将调用my_function(NULL);
my_function(无)—>它将调用my_function(NULL);
my_function(my_pointer)—>它会调用my_function(my_pointer);
最佳答案 您希望SWIG为p生成一个默认参数NULL.这可以通过以下两种方式之一实现,注意None将自动作为NULL指针传递.
1.使用“默认”类型图(SWIG doc)
在声明my_function之前,将以下typemap放入接口文件中:
%typemap(default) POINTER *p {
$1 = NULL;
}
2.在函数声明中指定默认参数(SWIG doc)
您可以在界面文件中显示SWIG以下函数声明:
void my_function(POINTER *p = NULL);
即使这不是有效的C,SWIG也会知道该怎么做.您也可以在%include语句之后添加它来覆盖C头文件中的函数声明.