标签: perlapi

有没有办法从XS访问perl中的特殊标记?

在perl的特殊标记一样__PACKAGE__,__SUB__,__FILE__,__LINE__存在并可以从脚本.

我可能会得到的值__PACKAGE__XS作为HvNAME( PL_currstash ),我想.
但如何访问他人?

是否有特殊的界面来访问所有这些XS?我爱:CTX->package,CTX->sub等等.

perl xs perlapi

11
推荐指数
1
解决办法
199
查看次数

如何从perl XS中找到当前的包名?

为了获得当前的上下文,我找到了caller_cx函数perlapi.但是没有结构描述.在perl源代码中perl.h我只能找到这个typedef:

typedef struct context PERL_CONTEXT;
Run Code Online (Sandbox Code Playgroud)

是否有示例如何使用此结构返回caller_cx来从XS查找当前包?

perl perlapi

9
推荐指数
1
解决办法
149
查看次数

标志'pIOK`是什么意思?

Devel::Peek我倾倒perl SV时,我可以看到:

SV = IV(0x1c13168) at 0x1c13178
  REFCNT = 1
  FLAGS = (IOK,pIOK)
  IV = 2
Run Code Online (Sandbox Code Playgroud)

但找不到描述是什么pIOK意思.

我想看看它在Devel::Peek,perlapi,perlguts,perlxs...在来源,我发现:

{SVp_IOK, "pIOK,"}
Run Code Online (Sandbox Code Playgroud)

但还是找不到什么SVp_IOK.它是什么?

UPD
我找到了这个文件.它揭示了旗帜的含义以及它们所处的位置.(要小心这个DOC已经过时了)

在此输入图像描述

此标志指示对象具有有效的非公共IVX字段值.它只能为值类型SvIV或其子类型设置.

UPD

为什么私人和公共旗帜不同

perl xs perlapi

5
推荐指数
1
解决办法
197
查看次数

标签 统计

perl ×3

perlapi ×3

xs ×2