【问题标题】:ASN1 Macro Value "is referenced, but is not defined."ASN1 宏值“被引用,但未定义”。
【发布时间】:2014-07-08 02:44:59
【问题描述】:

我们尝试在 ASN1 中创建一个宏,但编译器抛出以下错误:

line 6 (BIGINTMACRO): A0256W: 'BigIntValue' is referenced, but is not defined.

这是我们的代码:

BIGINTMACRO DEFINITIONS ::=
BEGIN
  BIGINT MACRO ::=
  BEGIN
    TYPE NOTATION ::= <type ::= INTEGER>
    VALUE NOTATION ::= value (VALUE BigIntValue)     
    BigIntValue ::= Int1 Int2
    Int1 ::= number
    Int2 ::= number
  END
END

【问题讨论】:

    标签: macros asn.1


    【解决方案1】:

    您仍在使用 1994 年(20 年前)从 ASN.1 中删除并被信息对象类和参数化取代的 ASN.1 MACRO 表示法是否有特殊原因?使用现代 ASN.1 比使用 ASN.1 宏表示法将头撞到墙上要好得多。

    我注意到您正在使用 OSS Nokalva ASN.1 编译器或http://asn1-playground.oss.com 上的在线 ASN.1 编译器。您应该通过发送邮件至 support@oss.com 请求 OSS 支持部门为您提供帮助。虽然 OSS ASN.1 编译器仍然支持 ASN.1 宏表示法,但支持部门可以帮助您将宏表示法转换为现代 ASN.1。

    宏符号在 20 年前从 ASN.1 中删除,因为它不明确,并且无法以机器可处理的方式完全捕捉宏作者的意图。现代 ASN.1 信息对象类和参数化解决了旧 ASN.1 MACRO 表示法中固有的问题。

    在这种特殊情况下,“VALUE”关键字后面的内容应该是 ASN.1 类型,而不是额外的宏产生式。

    【讨论】:

    • 您好 Paul,是的,我仍在尝试使用 ASN.1 MACRO Notation 有一个特殊的原因。我们有一位老师坚持使用宏,但不要问我为什么......
    • 请询问他为什么要教授 20 年前由于固有问题而从 ASN.1 中删除的内容。他应该专注于 ASN.1 的当前版本,除非他试图用糟糕的想法来上历史课。
    • 这是他的声明:“自 1994 年以来,宏被更现代的语言概念所取代,但在网络管理标准中,它们仍在使用,因此必须被理解”...... PS:我翻译了它来自德语,所以它可能并不完美
    • @PaulThorpe 关于 MACRO 被弃用的消息来源?
    • @NeDark 在 X.680 于 1994 年发布(X.208 的替代品)之后,ITU-T 撤回了 X.208(其中定义了 ASN.1 MACRO)。您可以去 ITU-T 书店查找 X.208 以查看其当前状态为“撤回”。
    猜你喜欢
    • 2021-04-09
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    相关资源
    最近更新 更多