1

在 ASN.1 中,您可以声明一个值引用,例如:

<identifier> <Type Reference> ::= <Value Notation>

例如:

cost INTEGER ::= 123

类型引用组件可以是内置类型,也可以是用户定义的类型。我的问题是,当提到用户定义的类型时,ASN.1 是否要求该类型必须已经定义?(假设它直到稍后才定义)。例如,以下是否是有效的 ASN.1 语法:

cost MyIntType ::= 50
MyIntType ::= INTEGER (0..100)

请注意,在类型赋值中声明它之前MyIntType,它在值赋值中被引用。

那有效吗?

4

2 回答 2

2

这是完全有效的。使用前不需要定义。

请注意,有时您无法避免这种情况,例如,如果类型之间存在循环依赖关系:

A ::= some definition involving B
B ::= some definition involving A
于 2013-09-26T17:06:51.340 回答
0

正如@Henry 解释的那样,ASN.1 允许前向引用;即在类型定义中使用之前引用。

在定义相互递归的数据类型时也非常有用(实际上是必要的)。

于 2019-05-21T21:48:42.860 回答