DOMANDA richiamare il main?

marcococ

Nuovo Utente
salve ragazzi , domanda forse un pò ignorante/banale ma abbiate pazienza.......linguaggio c .......quello che chiedo è come poter richiamare il main in una funzione ....grazie!
 

_Achille

Utente Èlite
3,000
687
Hardware Utente
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
Hard Disk
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
Scheda Video
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
Alimentatore
RM550X
Case
NZXT S340
Periferiche
Cooler Master XT; Razer Abyssus
Sistema Operativo
Windows 10 Pro
Il main è una funzione che internamente è chiamato da un’altra, cioè _start(). In C++ chiamare la funzione main() causa un errore in compilazione mentre in C è possibile addirittura chiamarla ricorsivamente:
C:
int main()
{
    main();
}
Ma perché dovresti richiamare il main? È una pratica che va assolutamente evitata...
 

marcococ

Nuovo Utente
perchè nel main ho una sorta di menu pricipale.......in una delle funzioni successive che ho sviluppato devo mettere come opzione "torna al menù principale" ecco tutto ....grazie comunque!
 

DispatchCode

Utente Attivo
593
342
Hardware Utente
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
Hard Disk
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
Scheda Video
Nvidia Geforce GTX 960M, 4GB
Scheda Audio
Realtek
Sistema Operativo
Windows 10 64bit
Per i menu testuali si utilizza solitamente un while o un do-while.
 
  • Mi piace
Reactions: _Achille

rodhellas

Utente Attivo
1,477
395
Hardware Utente
CPU
Intel i5 3470
Scheda Madre
AsRock H77 pro4/mvp
Hard Disk
120GB SSD + 1TB HD
RAM
12GB Corsair XMS3 1333mhz
Scheda Video
Gigabyte GTX 960 OC
Scheda Audio
Integrata
Monitor
SyncMaster 223BW
Alimentatore
Antec HCG-520M
Case
Thermaltake Commander Ms-i Snow Edition
Sistema Operativo
Windows 10 64bit
Non hai bisogno di richiamare il main se puoi ritornarci :ok: (ergo, usa in modo sensato le funzioni e i return)
 

DispatchCode

Utente Attivo
593
342
Hardware Utente
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
Hard Disk
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
Scheda Video
Nvidia Geforce GTX 960M, 4GB
Scheda Audio
Realtek
Sistema Operativo
Windows 10 64bit
è quello che ho fatto , ma il menu sta nel main , quindi se devo riproporre il menù in seguito devo richiamare il main......
No, non ti serve richiamarlo.
Mostra i qualche riga di codice, così è difficile dirti cosa cambiare. ;)
 

marcococ

Nuovo Utente
come dovrei usare i return per tornare al main? il codice ve lo risparmio, è molto lungo dato che sono 3 file linkati tra loro....
devo solo usare una funzione che se chiamata mi riporta al menù iniziale del main....
 
Ultima modifica:

DispatchCode

Utente Attivo
593
342
Hardware Utente
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
Hard Disk
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
Scheda Video
Nvidia Geforce GTX 960M, 4GB
Scheda Audio
Realtek
Sistema Operativo
Windows 10 64bit
Il punto è questo, stai sbagliando qualcosa se hai quella necessità. Dal main o dalla funzione chiamata dal main avrai il menu, e da lì richiamerai altre funzioni. Quando la funzione torna sei ancora nel menu.

Mostra almeno la parte del menu, altrimenti è impossibile mostrarti cosa fare, usando un caso di esempio simile alla tua situazione. ;)
 

marcococ

Nuovo Utente
Codice:
#include <stdlib.h>
#include <stdio.h>
#include "gamelib.h"


int main(){

  int scegli;

do{

  printf("Inserisci l'operazione da effettuare \n");
  printf(" 1. Crea mappa.\n 2. Gioca. \n 3. termina gioco.\n");
  printf("Attenzione, prima di giocare devi creare la mappa! \n " );

  scanf("%d",&scegli);
  if (scegli<1||scegli>3) {
  printf("Hai inserito un valore non valido\n" );
  }
  switch(scegli){
      case 1:
      crea_mappa();

      break;


      case 2:
     

      gioca();

      break;

      case 3:
      termina_gioco();

      break;


    }
}while(scegli!=3);


}
questo è il main.....
Codice:
void crea_mappa(){


int opzione;


do {
printf("\t Premi '1' per CREARE LA SCACCHIERA \n" );
printf("\t \n" );
printf("\t Premi '2' per STAMPARE LA SCACCHIERA \n" );
printf("\t \n" );
printf("\t Premi '3' per TORNARE INDIETRO \n" );
scanf("%d", &opzione );


switch (opzione) {
case 1:
crea_scacchiera();
break;


case 2:
stampa_scacchiera();
break;


case 3:
termina_creazione();
break;


default:
printf("Opzione non valida..\n" );
break;
}
} while(opzione!=3);


}

void termina_creazione() {

//torna al menu del main...
}

qui c'è la funzione, dove sull'opzione termina_creazione devo ritornare al menu del main....
 

DispatchCode

Utente Attivo
593
342
Hardware Utente
CPU
Intel i7 6700HQ, 2.60Ghz, 4 core 8 threads
Scheda Madre
Asustek
Hard Disk
Hitachi 7200 rpm, 1TB
RAM
16GB DDR4 (2 slot su 4)
Scheda Video
Nvidia Geforce GTX 960M, 4GB
Scheda Audio
Realtek
Sistema Operativo
Windows 10 64bit
Allora ti è sufficiente usare il return.
Se devi eseguire termina_creazione() e poi uscire devi mettere il return dopo alla chiamata alla funzione (il break quindi in quel case non serve).
 
  • Mi piace
Reactions: marcococ

Entra

oppure Accedi utilizzando