许多 Perl XS 代码使用const char *
XS 子程序的返回值,但从不只是char *
. 例如:
const char *
version(...)
CODE:
RETVAL = chromaprint_get_version();
OUTPUT: RETVAL
有人可以解释为什么const
是首选吗?在我的测试中,无论是否const
使用,返回的标量都是可修改的。
许多 Perl XS 代码使用const char *
XS 子程序的返回值,但从不只是char *
. 例如:
const char *
version(...)
CODE:
RETVAL = chromaprint_get_version();
OUTPUT: RETVAL
有人可以解释为什么const
是首选吗?在我的测试中,无论是否const
使用,返回的标量都是可修改的。
这只是为了清楚。该chromaprint_get_version
函数返回 a const char *
,因此 XSUB 也应该使用const char *
返回类型来定义。如果您查看内置的 typemapconst char *
,无论您使用,char *
还是, 都没有区别unsigned char *
。他们都使用T_PV
类型映射。在所有情况下,XSUB 都将返回一个包含 C 字符串副本的 SV,该副本始终是可修改的。