XSUB に頻繁にでてくる RETVAL ってなんなんだろう.
perlxs によると,XSUB の戻り値が non-void のときに xsubpp が自動生成する(C の)変数ということです.確かに,これまで書いてきた XSUB を C ソースに変換した結果をみると,RETVAL が宣言されています.RETVAL の型も XSUB の戻り値になってますね.
XS(XS_String_strlen) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: String::strlen(s)"); { size_t RETVAL; dXSTARG; const char * s = (const char *)SvPV_nolen(ST(0)); #line 13 "String.xs" RETVAL = strlen(s); #line 32 "String.c" XSprePUSH; PUSHu((UV)RETVAL); } XSRETURN(1); }