C扩展-返回一个长数组或指针数组?

你好, 我一直在发布有关为Python编写C扩展的信息...到目前为止, 超好的. 至少对于我需要包装的"简单"功能. 好的,我的C功能看起来像... my_num *donumberstuff(const char *in,const char *x){...} my_num被定义为typedef unsigned long my_num; (不确定这是否 很重要,还是可以创建一个处理寿命的包装器?) 无论如何..对于我的包装器,我有这个.. 静态pyObject *wrap_donumberstuff(pyObject *self,pyobject args){ char *in = 0; char *x = 0; 长 *结果= 0; int ok = pyarg_parsetuple(args," ss",&in,&x); 如果(!ok)返回0; 结果= DonumberStuff(in,x); 返回py_buildvalue(" l",结果); } ....我的问题是...在C代码中,结果是指向一系列数组的指针 渴望,我如何才能使返回的结果成为列表或其他 类似于Python中的数组? ....我也有一个返回字符数组的函数(用一个表示 char *)...它可以与上一个问题相同吗? 谢谢!!

# 回答1

所有的资深程序员都可以纠正我,但是我的方式 我的扩展是这样的: 静态pyObject* wrap_donumberstuff(pyobject* self,pyobject* args) { char* in = 0; char* x = 0; 长*结果= 0; int i = 0; pyObject* py = pytuple_new() int ok = pyarg_parsetuple(args," ss",&in,&x); 如果(!ok)返回null; 结果= Donumberstuff(在,x): len = sizeof(结果)/sizeof(long) for(i; i
# 回答2

对不起...我只是醒了,忘了我的C ...一定把它留在了 咖啡...无论如何,我犯了一些错误(不能初始化空白 元组...功能应返回一个值,大声笑). 静态pyObject* wrap_donumberstuff(pyobject* self,pyobject* args) { char* in = 0; char* x = 0; 长*结果= 0; int i = 0; pyObject* py = null; if(!pyarg_parsetuple(args," ss",&in&x)返回null; 结果= DonumberStuff(in,x); len = sizeof(结果)/sizeof(long); py = pytuple_new(len); for(i; i
# 回答3

有趣的...谢谢. 除了 python doc for ext? 谢谢. 布兰登·K写道: ---- ==通过newsgroups.com发布 - 美国 ENET访问超过100,000个新闻组== ----获得匿名,未经审查的,进入西海岸和东海岸服务器农场的访问! ---- ==最高保留率和完成率! http://www.newsgroups.com == ----
# 回答4

brandon k 写道: 我认为这不会做您似乎期望的事情. 伯恩哈德 - - intevation gmbh http://intevation.de/ Skencil http://skencil.org/ thuban http://thuban.intevation.org/
# 回答5

2005年10月12日04:46:34 -0700,Java和Swing 写道: ... 您可能想将其返回为Python字符串,即使它只是随机的 八位数据垃圾. 取决于该数据的真正代表,但这是 常见的成语,诸如结构和数组之类的模块期望其数据为 字符串. 请注意,Python字符串可能包含NUL字节. /Jorgen - - // jorgen grahn r'lyeh wgah'nagl fhtagn!
# 回答6

布兰登·K写道: 在这里使用py_buildvalue过大. pyint_fromlong会做 也是. 问候, 马丁

标签: python

添加新评论