为了获得当前上下文,我在caller_cx中找到了perlapi函数。但是没有对结构的描述。在perl源代码perl.h中,我只能找到这个typedef。
typedef struct context PERL_CONTEXT;有例子说明如何使用caller_cx返回的这个结构从XS找到当前的包吗?
发布于 2017-03-01 14:29:44
正如@Dada在注释中提到的那样,context结构被定义为cop.h:
struct context {
union {
struct block cx_blk;
struct subst cx_subst;
} cx_u;
};block结构也是在cop.h中定义的。
通过检查Perl caller函数在pp_ctl.c中的C实现(第1850行),我认为您可以使用以下代码获得包名:
const PERL_CONTEXT *cx = caller_cx(0, NULL);
char *pack_name = HvNAME((HV*)CopSTASH(cx->blk_oldcop));https://stackoverflow.com/questions/42531519
复制相似问题