erlang:ei_get_type():其中是为';类型';领域

erlang:ei_get_type():其中是为';类型';领域,erlang,erl-interface,Erlang,Erl Interface,我正在尝试使用ei_get_type()(),但是我很难找到记录“type”字段的位置。我已经在ei.h中查找过了,但我能找到的只是一个以“ERL_”开头的常量列表 这是正确的清单吗?我不确定,因为er_get_type()的原型在type字段中有*int**,而ei.h文件定义了上述常量 注意:此处未列出“erl_接口”包中使用的其他“常量”。根据Erlang中其余的c代码(odbcserver.c,show_msg.c),这是您应该比较的值 显然,这些是外部二进制格式用来标记元素类型的字节值

我正在尝试使用ei_get_type()(),但是我很难找到记录“type”字段的位置。我已经在ei.h中查找过了,但我能找到的只是一个以“ERL_”开头的常量列表

这是正确的清单吗?我不确定,因为er_get_type()的原型在type字段中有*int**,而ei.h文件定义了上述常量


注意:此处未列出“erl_接口”包中使用的其他“常量”。

根据Erlang中其余的c代码(odbcserver.c,show_msg.c),这是您应该比较的值


显然,这些是外部二进制格式用来标记元素类型的字节值,putget.h中的get8宏只返回这个值。

几个月以来,我一直在使用ei对cnode中的erlang项进行编码/解码,您提到的常量似乎还可以。我正在使用的是:

长->a

原子->d

元组->h

空列表->j

字符串->k

列表->l

二进制->m


在我必须解析的消息类型中,我只接收这些类型的消息

“小元组”和“大元组”有什么区别??
#define ERL_SMALL_INTEGER_EXT 'a'
#define ERL_INTEGER_EXT       'b'
#define ERL_FLOAT_EXT         'c'
#define ERL_ATOM_EXT          'd'
#define ERL_REFERENCE_EXT     'e'
#define ERL_NEW_REFERENCE_EXT 'r'
#define ERL_PORT_EXT          'f'
#define ERL_PID_EXT           'g'
#define ERL_SMALL_TUPLE_EXT   'h'
#define ERL_LARGE_TUPLE_EXT   'i'
#define ERL_NIL_EXT           'j'
#define ERL_STRING_EXT        'k'
#define ERL_LIST_EXT          'l'
#define ERL_BINARY_EXT        'm'
#define ERL_SMALL_BIG_EXT     'n'
#define ERL_LARGE_BIG_EXT     'o'
#define ERL_NEW_FUN_EXT   'p'
#define ERL_FUN_EXT           'u'