Se una funzione ha un tipo di ritorno diverso da void
, e la funzione non restituisce nulla, quindi suppongo che il compilatore restituisca un valore obsoleto (probabilmente visto come un valore non inizializzato). Succede al momento della compilazione, quindi perché non dovrebbe generare un errore?Se una funzione non restituisce alcun valore, con un tipo di ritorno valido, è giusto che il compilatore lanci la spazzatura?
Per esempio,
int func1() {
return; // error
}
int func2() {
// does not return anything
}
Il secondo func2
dovrebbe generare un errore, ma non è così. C'è una ragione per questo? Il mio pensiero era tale che, può essere visto come un valore non inizializzato, quindi se abbiamo bisogno di gettare un errore nel secondo caso, quindi abbiamo bisogno di gettare l'errore, se un valore è inizializzato, dire
int i; // error
int i = 6; // okay
Qualsiasi pensieri, o si tratta di una domanda doppia? Apprezzo il vostro aiuto.
C o C++? Ricevi errori o avvisi del compilatore? Quale compilatore stai usando? – littleadv
Alzare gli avvisi. –
possibile duplicato di [opzioni gcc: avviso su funzioni non vuote senza un'istruzione return] (http://stackoverflow.com/questions/9924570/gcc-options-warning-on-non-void-functions-without-a- dichiarazione di ritorno) –