PDA

Visualizza la versione completa : [C] Uscire da un insieme di funzioni


johnnny
21-05-2013, 12:04
Ho un problema, ho implementato un esercizio che richiede una serie di chiamate a più funzioni, molte delle quali sono ricorsive. Lo scopo è quello di riconoscere una determinata stringa di caratteri, e quando la grammatica risulta non corretta al primo carattere inesatto bisogna stampare un messaggio di errore e tornare al principale. C'è un metodo veloce e semplice per uscire dall'ambiente in cui è statoi rilevato l'errore, e di conseguenza anche da quelli chiamanti rimasti in attesa di un ritorno per tornare al principale con un messaggio di errore ?

MItaly
21-05-2013, 16:40
In C++ si userebbe un'eccezione, che risale lo stack automaticamente finché non trova un handler adeguato; in C c'è la coppia setjmp/longjmp, ma normalmente si tende ad evitare, dato che si ottiene codice poco leggibile (e dal comportamento imprevedibile per chi non ne conosce l'uso).
La soluzione più semplice alla fine resta restituire un valore particolare che faccia sì che le funzioni ricorsive ritornino immediatamente.

Loading