小编tmt*_*tvl的帖子

NativeCall中的位字段

我正在尝试为Cgraph创建Perl6绑定,并且其中一个结构为其某些属性设置了位字段,其值小于8。如何在模块中表示该字段?

我尝试使用is nativesize(x)特征定义自定义类型,但是CStructs仅支持8位宽倍数的类型。

C示例代码:

struct Agtag_s {
    unsigned objtype:2;
}
Run Code Online (Sandbox Code Playgroud)

我试过的

my native objtype is repr('P6int') is Int is nativesize(2) is export { }
class Agtag is repr('CStruct') is export {
    has objtype $.object-type;
}
Run Code Online (Sandbox Code Playgroud)

尝试将我的模块与该代码一起使用会失败,并显示以下错误消息: CStruct only supports native types that are a multiple of 8 bits wide (was passed: 2)

perl6 nativecall raku

8
推荐指数
1
解决办法
77
查看次数

标签 统计

nativecall ×1

perl6 ×1

raku ×1