开发者
资源
文档评分
Findability
Accuracy
Completeness
Readability
在线提单
论坛求助

其他使用场景

表1 ASN.1其它使用场景

ASN1其他使用场景

是否支持

示例

约束限制

赋值操作

支持

MyType ::= INTEGER

value MyType ::= 10

别名

支持

MyInt1 ::= INTEGER(0..128)

MyInt2 ::= MyInt1

MyInt3 ::= MyInt2

IMPORTS

支持

-- 定义一个模块A

A DEFINITIONS ::= BEGIN

MyType ::= INTEGER

END

-- 定义一个模块B,引入了模块A的MyType

B DEFINITIONS ::= BEGIN

IMPORTS MyType FROM A;

MyOtherType ::= MyType

END

IMPORTS语句实际不生效,默认导出所有类型。

EXPORTS

支持

EXPORTS ALL; -- 导出所有类型

EXPORTS Type; -- 导出模块中的指定类型

EXPORTS语句实际不生效,默认导出所有类型。

不支持一起编译的不同模块有相同类型定义。

递归定义

不支持

RecursiveSeq ::= SEQUENCE {

data INTEGER(0..128),

next RecursiveSeq

}

环形引用

不支持

CircularSequence1 ::= SEQUENCE { name OCTET STRING, cs2 CircularSequence2 OPTIONAL }

CircularSequence2 ::= SEQUENCE { cs1 CircularSequence1 }

内部类型约束

支持

InnerTypeCstrType ::= SEQUENCE {

a OCTET STRING(SIZE(1..3)),

b INTEGER(10..20),

c BOOLEAN OPTIONAL

}

InnerTypeCstrSeqType ::= InnerTypeCstrType (WITH COMPONENTS {

a ABSENT,

b (15..20) PRESENT,

c OPTIONAL

})

带有内部类型约束的类型将被当作引用类型使用,约束不生效。

内容约束

支持

ContentCstrType ::= SEQUENCE {

data OCTET STRING (CONTAINING ContentCstrBoolType)

}

ContentCstrBoolType ::= BOOLEAN

带有内容约束的成员,其在编解码过程中,内容不会被校验。

复杂类型嵌套

支持

MySeq ::= SEQUENCE {

a SEQUENCE {}

}

复杂类型(SEQUENCE、CHOICE、SEQUENCE OF)之间支持最多嵌套30层。

约束引用已定义的值

支持

max INTEGER ::= 128

MyInt ::= INTEGER(0..max)

value MyInt ::= 10

只支持INTEGER约束引用已定义的值。