Fórumok
Egy minimális C webszerverhez a következő kereszthivatkozást tartalmazó adatszerkezetet kellene kialakítanom:
enum method_t { GET, POST };
typedef struct {
char *url;
callback_t callback;
enum method_t method;
} req_t;
struct http_state {
char *file;
int left;
int retries;
req_t *req;
};
typedef void (*callback_t)(struct http_state *hs);
Jelenleg a data_t rekordban "callback_t callback" helyett "void* callback" van megadva. Így ugyan típuskényszerítéssel működik, de ez azért nem szép.
Hogyan tudom C-ben helyesen definiálni a fenti adatszerkezetet?
Hozzászólások
forward declaration a kulcsszó
typedef struct req req_t;
typedef struct http_state http_state_t;
typedef void (*callback_t)(http_state_t *hs);
struct req {
char *url;
callback_t callback;
enum method_t method;
};
struct http_state {
char *file;
int left;
int retries;
req_t *req;
};
Szóval előbb definiáld a típusokat, aztán a struct-okat
Elejére:
Köszönöm, gond nélkül lefordult! :)
Ezt olvasd el hozzá:
https://en.wikipedia.org/wiki/Forward_declaration