spicy(一)基本定义

本文介绍了spicy的unit类型,用于解析数据单位,类似于struct或record,包含有序字段并支持类型转换和约束。unit可通过声明public访问,其字段可指定大小、限制输入尺寸,还支持匿名字段和保留标识符。此外,文章讨论了如何通过&convert属性进行类型转换,并使用&requires属性执行解析约束。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

unit

spicy通过unit类型来解析数据单位,unit类型类似于我们所熟知的struct或者是record类型。它里面定义了一系列的具有顺序的字段,每个字段都有name和type,在运行的时候会存放对应的值。unit可以实例化,将值分配给各个字段,并且这些字段值可以被检索。

module Test;

public type Foo = unit {
    # 定义一个32位的整数
    version: uint32 &default=56; # 可以添加&default属性来添加默认值,否则不会设置默认值
    
};
# 实例化为f
global f:Foo;
# 你可以赋值,来覆盖默认值56
# f.version=60;
print f;  # 注意如果里面的字段没有赋值,即使有默认值也不会读取默认值。显示的是not set
print "version is %s" % f.version;  # 注意,访问字段,如果没有赋值,但是有默认值则会读取默认值

 

 unit是解析数据的起点或者说入口。如果要使得unit被当前模块外部(即其他文件想要使用该文件定义的unit)需声明为public,仅仅内部访问则可不写。

默认,s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值