Erl_eterm doc и erl_interface.h информационный конфликт?

Я не понимаю следующее между 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 для создания завершающей строки c NULL (char *), то же самое должно быть верно для макросов ERL _ * _ NODE *, поскольку все они определены одинаково. И ни один из них не возвращает ETERM *, как определено в документе.

Что мне здесь не хватает?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]