Группировка параметров в структуру - PullRequest
0 голосов
/ 12 мая 2019

У меня есть функция с большим количеством выходных параметров, которая в настоящее время выглядит как

int do_some_foo(char **string_out, int *index_out, char **description_out, etc...);

Так что, поскольку выходные параметры могут расти, и в настоящее время их всего около 8 (некоторые из них опущены для краткости), я склоняюсь ксгруппировать все параметры в структуру и документировать, что вызывающая сторона не владеет указателями out

struct foo_out{
    int status;
    char *string;
    int index;
    char *description;
    //...
};

//Pointers contained in the return value are not owned by
//the caller and should not be modified or reclaimed by it in 
//any way
const struct foo_out *do_some_foo(int *error_code);

//Release all the resources used by the library
//all const struct foo_out * pointers returned by do_some_foo
//becomes invalid
void prepare_shutdown(void);

. Таким образом, я думаю, что я ограничил использование этого указателя для вызываемых после освобождения ресурсов, используемых библиотекой.Таким образом, вызывающий абонент не должен использовать указатели после обращения к нему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...