Buongiorno, sono alle prime armi con il c++ e avrei bisogno di sapere come è possibile terminare un programma da una funzione di tipo void con una chiamata. per spiegarmi meglio, ho una funzione che va a controllare dei valori, e in alcune situazioni dovrei terminare il programma lì, senza eseguire tutte le funzioni chiamate nel main successivamente. Qualcuno avrebbe qualche consiglio?

chiesto 19 May, 16:22

Mattiaxix's gravatar image

Mattiaxix
201


Nulla di più semplice! Basta scrivere 'return 0;' dopo la chiamata della funzione, ad esempio

int main () {

void funza ();

return 0;

//altre funze che non verranno eseguite

}

Aggiungo che sarebbe buona pratica non returnare esplicitamente lo zero nel main, visto che viene returnato automaticamente alla fine. Talvolta, magari in un caso try-catch, returnare valori diversi da zero potrebbe essere utile a debuggare il programma o a far sapere ad altri programmi che qualcosa è andato storto e dove. Fammi sapere se vuoi esempi più concreti nei commenti =)

Se invece intendevi interrompere la funzione che returna void e poi arrestare anche il main, basta definire una variabile booleana in ambito globale o in un namespace. Modificando tale variabile e controllandone il valore nel main si ottiene il risultato ottenuto, ad esempio

namespace mybools {

bool check = false;

};

void funza () {

include namespace mybools;

// omissis

if (/condizione di uscita/){

check = true;

break; // o qualsiasi altra cosa ti faccia uscire dalla funzione }

}

int main () {

void funza();

if ( mybools::check ) return 0 ;

//altre funze

}

chiaramente in questo caso sarebbe più semplice returnare direttamente un bool, sempre che per qualche motivo la funzione non debba essere necessariamente void.

Ricordati che da terminale puoi sempre abortire un processo con CTRL+C. Se il processo è in background puoi usare 'pkill [nomeprocesso]'.

coll. permanente

ha risposto 19 May, 19:59

airordl's gravatar image

airordl
407526168

modificato 19 May, 20:20

La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×105
×35

domanda posta: 19 May, 16:22

domanda visualizzata: 84 volte

ultimo aggiornamento: 19 May, 20:20

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.