В MPFR основные типы данных c определены как
typedef struct {
[...]
} __mpfr_struct;
typedef __mpfr_struct mpfr_t[1];
typedef __mpfr_struct *mpfr_ptr;
, а функции в заголовке используют mpfr_ptr
, например
void mpfr_init (mpfr_ptr)
, но документы просто используя mpfr_t
вместо
void mpfr_init (mpfr_t x) .
Честно говоря, я думаю, что это вводит в заблуждение, и у меня действительно были проблемы с shared_ptr
s, которые я не мог легко решить из-за этого.
Мой Лучше всего предположить, что MPFR сделал typedef __mpfr_struct mpfr_t[1]
, чтобы люди могли просто «вслепую» вставить его в функции, как предлагают документы ?! Есть ли другие причины не делать typedef __mpfr_struct mpfr_t
вместо этого, изменить документы на то, что находится в заголовке, и поверить, что люди достаточно хороши с простыми указателями, или я что-то упускаю?