Я могу только догадываться о том, что должна делать эта функция, но вы, похоже, хотите выделить новую структуру my_server_t
и вернуть ее. Вместо этого вы определяете новую структуру внутри своей функции и возвращаете ее, которая недопустима.
Вероятно, вам нужно следующее:
my_server_t *server_create(void) {
my_server_t *srv = malloc(sizeof my_server_t);
if (srv == NULL)
return NULL; // Failed to allocate memory.
srv->port = /* some default value */;
srv->pending_connections_allowed = /* some default value */;
return srv;
}
Вы также можете передавать значения полей в качестве аргументов, если вы хотите:
my_server_t *server_create_with_values(unsigned short port, int pending) {
my_server_t *srv = malloc(sizeof my_server_t);
if (srv == NULL)
return NULL; // Failed to allocate memory.
srv->port = port;
srv->pending_connections_allowed = pending;
return srv;
}
Позже в вашем коде вы можете использовать функцию:
my_server_t *foo = server_create();
// or
my_server_t *foo = server_create_with_values(1337, 0);
Также не забудьте освободить выделенную память, когда она больше не нужна:
free(foo);