为什么 XS 订阅使用 const char *

  • 本文关键字:const char XS perl xs
  • 更新时间 :
  • 英文 :


很多Perl XS代码使用const char *作为XS子的返回值,但从来不只是char *。例如:

const char *
version(...)
    CODE:
        RETVAL = chromaprint_get_version();
    OUTPUT: RETVAL

来自XS-Fun的代码

有人可以解释为什么首选const吗?在我的测试中,无论是否使用const,返回的标量都是可修改的。

这只是为了清楚起见。chromaprint_get_version函数返回一个const char *,所以XSUB也应该用const char *返回类型来定义。如果你看一下内置的typemap,无论你使用const char *char *,甚至unsigned char *都没有区别。它们都使用 T_PV 类型映射。在所有情况下,XSUB 将返回一个包含 C 字符串副本的 SV,该副本始终是可修改的。

相关内容

  • 没有找到相关文章

最新更新