我不明白erl_eterm和erl_interface.h之间的以下内容
在erl_eterm中,以下描述为:
ETERM *ERL_PID_NODE(t)
ETERM *ERL_PID_NODE_UTF8(t)
ETERM *ERL_PORT_NODE(t)
ETERM *ERL_PORT_NODE_UTF8(t)
在erl_interface.h中,它们被定义为
#define ERL_PID_NODE(x) erl_atom_ptr_latin1((Erl_Atom_data*) &(x)->uval.pidval.node)
#define ERL_PID_NODE_UTF8(x) erl_atom_ptr_utf8((Erl_Atom_data*) &(x)->uval.pidval.node)
#define ERL_PORT_NODE(x) erl_atom_ptr_latin1((Erl_Atom_data*) &(x)->uval.portval.node)
#define ERL_PORT_NODE_UTF8(x) erl_atom_ptr_utf8((Erl_Atom_data*) &(x)->uval.portval.node)
#define ERL_REF_NODE(x) erl_atom_ptr_latin1((Erl_Atom_data*) &(x)->uval.refval.node)
如果 ERL_ATOM_PTR/ERL_ATOM_PTR_UTF8 需要与 ERL_ATOM_SIZE/ERL_ATOM_SIZE_UTF8 一起使用来构造一个以 NULL 结尾的 c 字符串 (char*),则对于 ERL_*_NODE* 宏也应该如此,因为它们的定义都相似。并且它们都没有返回文档中定义的 ETERM*。
我在这里想念什么?