2010-10-19 1 views
7

Eventuali duplicati:
C : How do you simulate an 'exception' ?manipolazione in puro C Eccezione

Ciao, io so che la gestione delle eccezioni è disponibile in C++ ma non in C. Ma ho anche letto che la gestione delle eccezioni è fornito dal lato del sistema operativo, quindi non c'è alcuna funzione per C che invoca lo stesso comportamento dal sistema operativo come provare a prendere e lanciare? Grazie.

+6

Duplicato: [C: Come si simula un''eccezione?] (Http://stackoverflow.com/questions/1219438/), [Come si implementano le eccezioni con l'istruzione nestable try-catch-finally con i messaggi in C] (http://stackoverflow.com/questions/1779189/), [Librerie di eccezioni per C (non C++)] (http://stackoverflow.com/questions/3581818/), [Librerie di eccezioni per C (non C++)] (http://stackoverflow.com/questions/1410329/) e correlati: [Come vengono implementate le eccezioni sotto il cofano?] (http://stackoverflow.com/questions/1995734/), [Come lanciare un'eccezione in C?] (http://stackoverflow.com/questions/2891766/) ecc. – dmckee

+0

Avanti, B.Gen, non sei nuovo qui. Sai come funzionano le cose. – dmckee

risposta

7

Il linguaggio C non supporta la gestione delle eccezioni. Tuttavia un mezzo di gestione delle eccezioni per C esiste su base specifica di piattaforma + compilatore.

In Windows, ad esempio, i programmi C possono utilizzare la gestione delle eccezioni SEH.

ho visto gli argomenti in passato che la coppia funzione C setjmp e longjmp è la gestione delle eccezioni in C. ritengo più vicino al modello di espulsione ma vale la pena indagare

1

Non in modo indipendente dalla piattaforma. E questo sarebbe solo per le eccezioni hardware/OS, non per le eccezioni SW.

2

C prevede eccezioni in una libreria standard: setjmp()/longjmp().