Appel de fonction en C

Fermé
neo24 - 11 mai 2008 à 09:34
jerémiethe7 Messages postés 152 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 27 février 2009 - 11 mai 2008 à 11:07
Bonjour, j'essaye de appelé une fonction depuis une autre fonction mais lors de la compilation j'ai le message d'erreur suivant :
"chemin_de_mon_programme conflicting types for 'fonction_appelé'
chemin_de_mon_programme previous implicit declaration of 'fonction_appelé' was here"

J'aurais donc voulue savoir si appelé une fonction depuis une autre fonction est possible et si oui comment faire, vu qu'aparament pour moi ca ne marche pas

voici la forme de ma fonction que j'appele :fonction_appele(parmatres1,parametres2)


Merci d'avance de votre réponse

3 réponses

jerémiethe7 Messages postés 152 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 27 février 2009 32
11 mai 2008 à 09:37
salut neo,
tu pourrais nous afficher ton code s'il te plait ??
ah oui et quel compilateur utilise tu ?
0
Voici comme tu m'a demandé le code source complet

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void menu(int num_inter[],int priorite[],int i,int z,int nbre_inter)
{
int choix;

scanf("%d",&choix);

switch(choix)
{
case 1 :
ajout(num_inter,priorite,i,z,nbre_inter); <----- fonction en cause
break;
case 2 :
/*afficher(num_inter,priorite,i,z,nbre_inter);*/ <---- idem pour celle la
break;
case 3 : printf("En cour de realisation");
break;
case 4 : printf("Appuyer sur une touche pour quitter");
break;

default : printf("Erreur de saisie, merci de relance le programme s'il vous plait");
}
}

void ajout(int num_inter[],int priorite[],int i,int z,int nbre_inter)
/* i étant l'indice pour le tableau num_inter et z l'indice pour le tableau des priorités*/
{
i=0;
z=0;
nbre_inter=0;
printf("----------------------------Ajout d'intervention--------------------------------\n\n");
for (i=0; i<6; i++)
{
printf("Saisir un numero d'intervention (taper -1 pour sortir):\n-->");
scanf("%d",&num_inter[i]);

if (num_inter[i] != -1)
{
printf("Saisir un numero de priorite :\n-->");
scanf("%d",&priorite[z]);
nbre_inter++;
}
else
{
printf("Nombre d'intervention creer:\n--> %d\n",nbre_inter);
printf("Appuyer sur une touche pour revenir au menu \n");
}
}
}

void afficher(int num_inter[],int priorite[],int i,int z,int nbre_inter)
{
i=0;
z=0;
printf("--------------------------Affichage des interventions---------------------------\n\n");
printf("Nombre d'intervention creer : %d\n\n",nbre_inter);
for (i=0;i<=nbre_inter;i++)
{
if (nbre_inter != 0)
{
printf("Numéro d'intervention : %d\n",num_inter[i]);
printf("Priorite de l'intervention : %d\n",priorite[z]);
}
}
/*if (i != -1){

printf("Appuyer sur une touche pour revenir au menu\n");
return main();*/
}

int main()
{
int num_inter[100],i;
int priorite[100],z;
int nbre_inter;
int choix;

menu(num_inter,priorite,i,z,nbre_inter);

getch();
}


J'utilise Dev C++ et je le compile avec l'extension "*.c"

Merci de votre aide
0
jerémiethe7 Messages postés 152 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 27 février 2009 32
11 mai 2008 à 11:07
salut neo,

rassure toi rien de grave ^^.

il faut juste mettre tes fonction au dessus de leur appels.
voici le code qui fonctionne :

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>



void ajout(int num_inter[],int priorite[],int i,int z,int nbre_inter)
/* i étant l'indice pour le tableau num_inter et z l'indice pour le tableau des priorités*/
{
i=0;
z=0;
nbre_inter=0;
printf("----------------------------Ajout d'intervention--------------------------------\n\n");
for (i=0; i<6; i++)
{
printf("Saisir un numero d'intervention (taper -1 pour sortir):\n-->");
scanf("%d",&num_inter[i]);

if (num_inter[i] != -1)
{
printf("Saisir un numero de priorite :\n-->");
scanf("%d",&priorite[z]);
nbre_inter++;
}
else
{
printf("Nombre d'intervention creer:\n--> %d\n",nbre_inter);
printf("Appuyer sur une touche pour revenir au menu \n");
}
}
}

void afficher(int num_inter[],int priorite[],int i,int z,int nbre_inter)
{
i=0;
z=0;
printf("--------------------------Affichage des interventions---------------------------\n\n");
printf("Nombre d'intervention creer : %d\n\n",nbre_inter);
for (i=0;i<=nbre_inter;i++)
{
if (nbre_inter != 0)
{
printf("Numéro d'intervention : %d\n",num_inter[i]);
printf("Priorite de l'intervention : %d\n",priorite[z]);
}
}
/*if (i != -1){

printf("Appuyer sur une touche pour revenir au menu\n");
return main();*/
}

void menu(int num_inter[],int priorite[],int i,int z,int nbre_inter)
{
int choix;

scanf("%d",&choix);

switch(choix)
{
case 1 :
ajout(num_inter,priorite,i,z,nbre_inter); //<----- fonction en cause
break;
case 2 :
/*afficher(num_inter,priorite,i,z,nbre_inter);*/ //<---- idem pour celle la
break;
case 3 : printf("En cour de realisation");
break;
case 4 : printf("Appuyer sur une touche pour quitter");
break;

default : printf("Erreur de saisie, merci de relance le programme s'il vous plait");
}
}

int main()
{
int num_inter[100],i;
int priorite[100],z;
int nbre_inter;
int choix;

menu(num_inter,priorite,i,z,nbre_inter);

getch();
}

J'ai juste mis la fonction menu au dessus du main.

Sinon tu peut aussi laisser ton code comme cela, et mettre en première avant la fonction menu :
void ajout(int num_inter[],int priorite[],int i,int z,int nbre_inter);

et le code devient ceci :

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void ajout(int num_inter[],int priorite[],int i,int z,int nbre_inter);

void menu(int num_inter[],int priorite[],int i,int z,int nbre_inter)
{
int choix;

scanf("%d",&choix);

switch(choix)
{
case 1 :
ajout(num_inter,priorite,i,z,nbre_inter); //<----- fonction en cause
break;
case 2 :
/*afficher(num_inter,priorite,i,z,nbre_inter);*/// <---- idem pour celle la
break;
case 3 : printf("En cour de realisation");
break;
case 4 : printf("Appuyer sur une touche pour quitter");
break;

default : printf("Erreur de saisie, merci de relance le programme s'il vous plait");
}
}

void ajout(int num_inter[],int priorite[],int i,int z,int nbre_inter)
/* i étant l'indice pour le tableau num_inter et z l'indice pour le tableau des priorités*/
{
i=0;
z=0;
nbre_inter=0;
printf("----------------------------Ajout d'intervention--------------------------------\n\n");
for (i=0; i<6; i++)
{
printf("Saisir un numero d'intervention (taper -1 pour sortir):\n-->");
scanf("%d",&num_inter[i]);

if (num_inter[i] != -1)
{
printf("Saisir un numero de priorite :\n-->");
scanf("%d",&priorite[z]);
nbre_inter++;
}
else
{
printf("Nombre d'intervention creer:\n--> %d\n",nbre_inter);
printf("Appuyer sur une touche pour revenir au menu \n");
}
}
}

void afficher(int num_inter[],int priorite[],int i,int z,int nbre_inter)
{
i=0;
z=0;
printf("--------------------------Affichage des interventions---------------------------\n\n");
printf("Nombre d'intervention creer : %d\n\n",nbre_inter);
for (i=0;i<=nbre_inter;i++)
{
if (nbre_inter != 0)
{
printf("Numéro d'intervention : %d\n",num_inter[i]);
printf("Priorite de l'intervention : %d\n",priorite[z]);
}
}
/*if (i != -1){

printf("Appuyer sur une touche pour revenir au menu\n");
return main();*/
}

int main()
{
int num_inter[100],i;
int priorite[100],z;
int nbre_inter;
int choix;

menu(num_inter,priorite,i,z,nbre_inter);

getch();
}

Voilà a+.
0