我尝试使用Erlang的asn1ct:compile函数编译asn文件。我运行以下代码:
asn1ct:compile("PDU-definitions", [per, verbose]).
然后出现以下错误:
...
{error,{system_limit,[{erlang,list_to_atom,
["enc_InterRATHandoverInfo_v390NonCriticalExtensions_present_v3a0NonCriticalExtensions_laterNonCriticalExtensions_v3g0NonCriticalExtensions_v4b0NonCriticalExtensions_v4d0NonCriticalExtensions_v590NonCriticalExtensions_v690NonCriticalExtensions_nonCriticalExtensions"], []},
...
我用Google搜索并发现255-character length limitation of Erlang's atom。由于ASN文件中嵌套数据结构太多,相应原子的长度超出限制。
我的问题是:如果我可以将默认长度限制修改为更大的值,或者这种情况有一些解决方法?
谢谢!
答案 0 :(得分:1)
从R17开始,在修改源代码和重新编译之外,仍有无法修改Erlang中的最大字符数限制。对asn1ct的文档进行稀疏的研究表明,没有办法改变原子编码行为。
我看到的最好的赌注是" n2n"编译选项,指示编译器生成进行名称到枚举转换的函数。我认为在这种情况下它仍将构造原子,但这将是一个没有实际意义的点。
文档中没有任何其他内容提示更改名称构造行为的方法,因此严重嵌套的数据结构会导致问题。