SWIG Python默认参数

给出以下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头文件中的函数声明.

点赞