最近在写python扩展C的相关代码,遇到一个问题,专门上来求助!
是有关于python扩展C传参的问题,如果传的参数是整形和字符串,很容易处理,但是遇到二级指针怎么办?
如下例子中:该如何写关于 alloc_mem 函数的扩展模块呢?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char* alloc_mem(char **p)
{
*p = (char *)malloc(100);
if (*p == NULL)
return NULL;
strcpy(*p, "hello python!");
return *p;
}
int main(int argc, char *argv[])
{
char *p;
printf("%s\n", alloc_mem(&p));
return;
}
J'étais peut-être dans une impasse à ce moment-là, mais plus tard, j'ai résolu le problème par d'autres méthodes, j'ai utilisé la méthode d'extension du module C en python, qui est le PyObject mentionné dans les commentaires.
C'est-à-dire que les paramètres int ou char * sont toujours utilisés, mais d'autres opérations sont effectuées dans la fonction C.
Merci encore à flyzero, garfileo et araraloren pour leurs conseils.