Qual è il modo corretto per uscire dal programma in C?

6

Ci sono molti modi per uscire dal programma in C. Alcuni di questi restituiscono zero o codice di errore, usando la funzione exit con EXIT_SUCCESS, EXIT_FAILURE, exit (0), exit (1) o qualche altro codice di errore, abort e probabilmente Qualche altra cosa a cui non posso pensare ora.

La mia domanda è quale opzione è la migliore e perché. Sto chiedendo qui perché ogni volta che ho fatto questa domanda ai programmatori più esperti, è finita come una guerra santa.

    
posta AndrejaKo 03.11.2010 - 22:23
fonte

2 risposte

10

Penso che la cosa migliore sia restituire EXIT_SUCCESS o restituire un numero diverso da zero per il quale è stato documentato un codice di errore, oppure EXIT_FAILURE se non è possibile definire i codici di errore per tutte le condizioni che potrebbero causare un errore. Ciò consentirebbe a un programma che utilizza il programma (in una funzione pipe o batch) di utilizzare effettivamente il codice di errore per determinare cosa fare dopo, se applicabile.

Personalmente non sono sposato con macro che sempre, su ogni singola implementazione sulla terra sono uguali a 0 ma hey quel tipo di commento può farti downvoted.

    
risposta data 03.11.2010 - 22:27
fonte
3

Non c'è nessuno "migliore". Se si desidera massimizzare la portabilità, è possibile utilizzare solo tre valori: EXIT_SUCCESS, EXIT_FALURE e 0 (e 0 e EXIT_SUCCESS significano la stessa cosa). Se non ti dispiace perdere una certa portabilità, è spesso utile restituire vari altri valori per indicare il motivo per cui qualcosa non ha funzionato, o (in alcuni casi) restituire un valore diverso da zero anche in caso di successo per indicare cose come quante di X trovato, o porta il risultato di un calcolo, ecc.

Come tale, hai una scelta tra portabilità (ma principalmente a sistemi che probabilmente non ti interessano, principalmente VMS) e funzionalità su un insieme leggermente ridotto di sistemi. Devi decidere quale è più importante per te.

Modifica: No, EXIT_SUCCESS non è sempre uguale a zero - ma (almeno per quanto riguarda le cure standard) i due significano la stessa cosa. C'era almeno un compilatore su VMS, tuttavia, che definiva EXIT_SUCCESS su un valore diverso da zero (VMS normalmente interpretava i numeri pari come errori e numeri dispari come successo, quindi EXIT_SUCCESS era definito al numero dispari corretto e 0 era trattato in modo speciale, quindi il sistema ha ottenuto un numero dispari quando / se lo hai restituito).

    
risposta data 03.11.2010 - 23:20
fonte

Leggi altre domande sui tag