Зачем определять "typedef someStruct someName [1]", как это делает MPFR? - PullRequest
2 голосов
/ 07 августа 2020

В 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 вместо этого, изменить документы на то, что находится в заголовке, и поверить, что люди достаточно хороши с простыми указателями, или я что-то упускаю?

...