加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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,该字符串始终可以修改.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读