perl – 为什么XS subs使用const char *?
发布时间:2020-12-15 21:49:36 所属栏目:大数据 来源:网络整理
导读:很多Perl XS代码使用const char *作为XS sub的返回值,但从不只是char *.例如: const char *version(...) CODE: RETVAL = chromaprint_get_version(); OUTPUT: RETVAL 代码来自xs-fun 有人可以解释为什么const是首选吗?在我的测试中,返回的标量可以修改是否
很多Perl XS代码使用const char *作为XS sub的返回值,但从不只是char *.例如:
const char * version(...) CODE: RETVAL = chromaprint_get_version(); OUTPUT: RETVAL 代码来自xs-fun 有人可以解释为什么const是首选吗?在我的测试中,返回的标量可以修改是否使用const. 解决方法
这只是为了清晰起见. chromaprint_get_version函数返回一个const char *,因此XSUB也应该用const char * return类型定义.如果你看一下
built-in typemap,那么使用const char *,char *,甚至unsigned char *都没有区别.它们都使用T_PV类型映射.在所有情况下,XSUB都将返回一个包含C字符串副本的SV,该字符串始终可以修改.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |