Sono stato creato un tipo opaco e ho due opzioni per la sua gestione.
Il primo appare così:
type_t *a = type_init();
int err;
err = type_do(a, "foo", "bar", FLAGBIT1|FLAGBIT2, NULL);
if (!err) {
type_print_result(a);
...
}
type_free(a);
Il secondo è:
type_t *a;
int err;
err = type_do(&a, "foo", "bar", FLAGBIT1|FLAGBIT2, NULL);
if (!err) {
type_print_result(a);
...
}
type_free(a);
type_do
è la funzione che calcola i risultati su cui possiamo lavorare. Dato che potresti sottostimare nel secondo caso l'inizializzazione avviene entro type_do
, ecco perché devo passare l'indirizzo di a
. È assolutamente necessario chiamare type_do
prima di fare qualsiasi altra cosa con type_t
. C'è qualche ragione per avere una funzione init separata?