Il mio codice ha molti controlli per rilevare errori in vari casi (molte condizioni comporterebbero lo stesso errore), all'interno di una funzione che restituisce una struttura di errore. Invece di apparire così:
err_struct myfunc(...) {
err_struct error = { .error = false };
...
if(something) {
error.error = true;
error.description = "invalid input";
return error;
}
...
case 1024:
error.error = true;
error.description = "invalid input"; // same error, but different detection scenario
return error;
break; // don't comment on this break please (EDIT: pun unintended)
...
L'uso di goto
nel seguente contesto è considerato migliore dell'esempio precedente?
err_struct myfunc(...) {
err_struct error = { .error = false };
...
if(something) goto invalid_input;
...
case 1024:
goto invalid_input;
break;
return error;
invalid_input:
error.error = true;
error.description = "invalid input";
return error;