Recentemente ho scritto un post:
Weird Error in C++ Program: Removing Printout Breaks ProgramIn che modo i prog ++ C++ ottengono il loro valore di ritorno, quando non viene specificato un ritorno nella funzione?
... in cui stavo cercando di risolvere un problema apparentemente sconcertante, in cui la rimozione di un comunicato cout avrebbe rotto il mio programma.
Come si è scoperto, il mio problema era che mi sono dimenticato di restituire il mio flag true/false success che stavo usando in seguito per la logica.
Ma apparentemente QUALCOSA è stato restituito e che qualcosa era sempre vero se lasciavo quel cout in, ma sembrerebbe "magicamente" diventare falso quando l'ho tirato fuori.
La mia domanda per voi è:
Che cosa determina cosa restituisce una funzione C++ quando non viene eseguito alcun comando di ritorno all'interno della funzione? C'è qualche logica?
Ovviamente dimenticare che il tipo di reso è una cattiva idea. In questo caso, tuttavia, è stato in gran parte dovuto alla natura del mio programma: un lavoro rapido di hacking. In seguito ho deciso che non valeva la pena di includere l'implementazione di un algoritmo per determinare il successo/l'insuccesso della chiamata alla funzione, ma che inavvertitamente ha lasciato il codice dipendente dal rendimento.
modo sconcertante g ++ mi ha dato nessun avviso o errori durante la compilazione del file eseguibile in questo modo:
g++ main.cc -g -o it_util
La mia versione è: g ++ (GCC) 4.1.2 20.080.704 (Red Hat 4.1.2-44)
Ancora una volta, per salvare altre frustrazioni future nel caso in cui commettano lo stesso stupido errore e si incontrino con lo stesso comportamento apparentemente erratico, qualcuno può illuminare dove una funzione senza un ritorno ottiene il suo valore di ritorno?
Grazie !!
Cosa succede se si compila con il flag '-Wall'? –
Da qualunque cosa si trovi su 'eax', suppongo? –
Il valore restituito è specifico per macchina/architettura. Se fai un fischio su quale sistema operativo/computer/compiler combo lavori (32 bit/64 bit) e di quale tipo è il valore di ritorno previsto (int, struttura, puntatore, virgola mobile), qualcuno potrebbe aiutarti qui. Saluti rbo –