Appeler la fonction main ss linux

lilinunux -  
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

A voir également:

3 réponses

ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   340
 
Sans code source, on ne saura pas faire grand-chose ...
0
lilinunux
 
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
0
ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   340
 
Boucle, tout simplement.
int main(void)
{
	while (1)
	{
		printf("Quel est votre choix ?");
		scanf("%d",choix);
		switch(choix)
		{
			case 1:
				void addition (void)
				break;
			case 2:
				void soustraction (void)
				break;
		}
	}
}
0
loupius Messages postés 789 Statut Membre 148
 
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.
0