Appeler la fonction main ss linux
lilinunux
-
loupius Messages postés 789 Statut Membre -
loupius Messages postés 789 Statut Membre -
Bonjour,
J ai besoin d appeler la fonction main dans mes sous fonction , je travaille sous linux et un simple main(); ne marche pas
merci
J ai besoin d appeler la fonction main dans mes sous fonction , je travaille sous linux et un simple main(); ne marche pas
merci
3 réponses
-
Sans code source, on ne saura pas faire grand-chose ...
-
void addition (void)
void soustraction (void);
int main(void)
{
void menu (void); // le menu est affiche 1=addition et 2= soustraction
printf("qu elle est votre choix?");
scanf("",choix);
switch(choix)
{
case1:
void addition (void)
break;
case2:
void soustraction (void)
break;
}
return 0;
}
void addition (void)
{
int x=2; x++;
printf("le resu=%d",x);
// je voudrai une fois le resultat de l addition afficher, relanC le menu afin ke l'on puisse choisie la soustraction désormais mais sous linux cela ne marche pas:
>>>>main ();<<<<<<
}
....
//bon j ai pas déclaré les sous fonction ect, mais c ets simplement pour vous illustrer ce que je souhaite faire: je voudrais que lorsque -
La question est intéressante. Soit le programme suivant:
#include <stdio.h> void addition (void); void soustraction (void); int main(void) { int choix; printf("Votre choix (1 addition, 2 soustraction) ? "); scanf("%d",&choix); switch(choix) { case 1: addition(); break; case 2: soustraction(); break; } return 0; } int x = 2; void addition (void) { printf("+>>> Resultat = %d\n",++x); main(); return; } void soustraction (void) { printf("->>> Resultat = %d\n",--x); main(); return; } [loupius]$ gcc -Wall prog.c [loupius]$ ./a.out Votre choix (1 addition, 2 soustraction) ? 1 +>>> Resultat = 3 Votre choix (1 addition, 2 soustraction) ? 2 - >>> Resultat = 2 Votre choix (1 addition, 2 soustraction) ? 2 ->>> Resultat = 1 Votre choix (1 addition, 2 soustraction) ? 0 [loupius]$L'exécution du programme s'est normalement arrêtée: Etonnant, non ? On pourrait s'attendre à la continuation du programme par le passage dans les 'return' des fonction 'addition' ou 'soustraction'. En fait on passera dans ces 'return' que lorsque la phase de terminaison du programme sera déclenchée, et ce sera le cas lorsque sera exécuté le 'return 0' de la fonction 'main' ... car ce 'return' n'est pas un classique 'return' mais équivaut en fait à un 'exit 0'... et c'est la raison pour laquelle le programme s'arrête normalement.
Ceci étant, ce n'est pas une bonne manière de faire car on ne fait qu'empiler les appels de fonctions et que la pile, comme le monde, n'est pas infinie !
NB: La compilation et l'exécution sous Linux ne pose absolument aucun problème.
Bonne réflexion.