Comment organiser des procedures avant main
Résolu/Fermé
zaratta
Messages postés
19
Date d'inscription
mardi 4 décembre 2007
Statut
Membre
Dernière intervention
15 août 2008
-
27 avril 2008 à 20:13
zaratta Messages postés 19 Date d'inscription mardi 4 décembre 2007 Statut Membre Dernière intervention 15 août 2008 - 28 avril 2008 à 23:32
zaratta Messages postés 19 Date d'inscription mardi 4 décembre 2007 Statut Membre Dernière intervention 15 août 2008 - 28 avril 2008 à 23:32
A voir également:
- Organisation loto clé en main
- Clé windows 10 gratuit - Guide
- Cle usb non reconnu - Guide
- Clé bootable windows 10 - Guide
- Recuperer cle windows - Guide
- Formater clé usb mac - Guide
3 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
27 avril 2008 à 20:28
27 avril 2008 à 20:28
Salut,
Pour pouvoir utiliser une fonction il n'y a pas mille règles.
Soit tu la définie avant l'utilisation, soit tu écrit un prototype et la définition tu le mettra après l'emplacement où tu l'utlises.
Tu peux écrire les prototypes dans un fichier programme.h et les fonctions dans un fichier programme_fonctions.c
Lit bien les messages d'erreurs pour voir les nom des fonctions qui pose des problèmes.
Par exemple si je fait comme ça
je vais avoir un message d'erreur puisque j'essaie d'utilsier fonction1() dans main sans l'avoir préalablement déclarée.
Donc soit j'écrit comme ça
soit comme ça
Pour pouvoir utiliser une fonction il n'y a pas mille règles.
Soit tu la définie avant l'utilisation, soit tu écrit un prototype et la définition tu le mettra après l'emplacement où tu l'utlises.
Tu peux écrire les prototypes dans un fichier programme.h et les fonctions dans un fichier programme_fonctions.c
Lit bien les messages d'erreurs pour voir les nom des fonctions qui pose des problèmes.
Par exemple si je fait comme ça
#include<stdio.h> int main() { fonction1(); return 0; } void fonction1(){ ........... }
je vais avoir un message d'erreur puisque j'essaie d'utilsier fonction1() dans main sans l'avoir préalablement déclarée.
Donc soit j'écrit comme ça
#include<stdio.h> void fonction1(); int main() { fonction1(); return 0; } void fonction1(){ ........... }
soit comme ça
#include<stdio.h> void fonction1(){ ........... } int main() { fonction1(); return 0; }
zaratta
Messages postés
19
Date d'inscription
mardi 4 décembre 2007
Statut
Membre
Dernière intervention
15 août 2008
1
28 avril 2008 à 01:08
28 avril 2008 à 01:08
merci infiniment pour ta réponse....
j"ai essayé avec cette méthode ...
#include<stdio.h>
void fonction1();
int main()
{
fonction1();
return 0;
}
void fonction1(){
...........
}
et apres complilation on m'affiche:
" Extra parameter in call to fonction1() "
par exemple la procédure VAR(); qui appelle la procédure l_v(); qui vient juste aprés
par conséquence "function 'l_v' should have a protype"
sachant aussi qu'on est pas encore rentré dans main()
bonne soirée à tous et surtout merci d'avance
j"ai essayé avec cette méthode ...
#include<stdio.h>
void fonction1();
int main()
{
fonction1();
return 0;
}
void fonction1(){
...........
}
et apres complilation on m'affiche:
" Extra parameter in call to fonction1() "
par exemple la procédure VAR(); qui appelle la procédure l_v(); qui vient juste aprés
par conséquence "function 'l_v' should have a protype"
sachant aussi qu'on est pas encore rentré dans main()
bonne soirée à tous et surtout merci d'avance
Newtron
Messages postés
2
Date d'inscription
samedi 19 avril 2008
Statut
Membre
Dernière intervention
28 avril 2008
9
28 avril 2008 à 09:46
28 avril 2008 à 09:46
la fonction doit etre declarée soit:
- par simple prototype avant main() puis definition complète apres main()
- par definition complete avant main()
N.B : 1- l'entete de la fonction (= la ligne contenant le nom de la fonction et ses parametres) doit preceder l'appel de cette fonction, donc l'ordre de la declaration des fonction doit etre le meme ordre de l'appel des fonction si on est hors main car les fonctions qu(on declare ne sont pas toutes appelées dans main() mais peuvent etre appelées par des autres fonctions. Donc, la declaration d'une fonction non-utilisée dans main() mais dans une autre fonction doit etre avant la declaration de cette derniere (la fonction appelante)
2-les arguments dans l'entete d'une fonction doivent etre les memes qu'on appelle la fonction, dans le sens qu'on doit respecter les types et l'ordre (les noms des variables n'est pas important).
3-le msg d'erreur: - "...should have a prototype...." signifie oubien la fonction n'est pas declarée, oubien declarée aprés son appel, oubien le nom utilisé lors de l'appel ne coincide pas avec le nom de la fonction declarée, N.B: la casse est sensible.
- "..........extra parametre....." signifie que le nombre d'arguments n'est pas respecté.
- par simple prototype avant main() puis definition complète apres main()
- par definition complete avant main()
N.B : 1- l'entete de la fonction (= la ligne contenant le nom de la fonction et ses parametres) doit preceder l'appel de cette fonction, donc l'ordre de la declaration des fonction doit etre le meme ordre de l'appel des fonction si on est hors main car les fonctions qu(on declare ne sont pas toutes appelées dans main() mais peuvent etre appelées par des autres fonctions. Donc, la declaration d'une fonction non-utilisée dans main() mais dans une autre fonction doit etre avant la declaration de cette derniere (la fonction appelante)
2-les arguments dans l'entete d'une fonction doivent etre les memes qu'on appelle la fonction, dans le sens qu'on doit respecter les types et l'ordre (les noms des variables n'est pas important).
3-le msg d'erreur: - "...should have a prototype...." signifie oubien la fonction n'est pas declarée, oubien declarée aprés son appel, oubien le nom utilisé lors de l'appel ne coincide pas avec le nom de la fonction declarée, N.B: la casse est sensible.
- "..........extra parametre....." signifie que le nombre d'arguments n'est pas respecté.
zaratta
Messages postés
19
Date d'inscription
mardi 4 décembre 2007
Statut
Membre
Dernière intervention
15 août 2008
1
28 avril 2008 à 23:32
28 avril 2008 à 23:32
bon salut à tout lemonde...
je vous remercie tous pour vos précieuses réponses
ma solution était de declaré un prototype void fonction();
avant la fonction qui l'appelle c à d:
#les includes<.............h>
void fonction();
void fonction_appelante()
{ ...........................
fonction();
...........................
}
void fonction(char o,int p)
{ ...........................
...........................
}
main(){................................
.............................
}
et aussi ( et surtout ), les parametres du prototype..comme suit:
#les includes<.............h>
void fonction(char s(ou o,ou n'importe),int k);
void fonction_appelante()
{ ...........................
fonction();
...........................
}
void fonction(char o,int p)
{ ...........................
...........................
}
main(){................................
.............................
}
je vous remercie tous pour vos précieuses réponses
ma solution était de declaré un prototype void fonction();
avant la fonction qui l'appelle c à d:
#les includes<.............h>
void fonction();
void fonction_appelante()
{ ...........................
fonction();
...........................
}
void fonction(char o,int p)
{ ...........................
...........................
}
main(){................................
.............................
}
et aussi ( et surtout ), les parametres du prototype..comme suit:
#les includes<.............h>
void fonction(char s(ou o,ou n'importe),int k);
void fonction_appelante()
{ ...........................
fonction();
...........................
}
void fonction(char o,int p)
{ ...........................
...........................
}
main(){................................
.............................
}