Bonjour,
y a t-il une différence entre un programme dont les fonctions sont avant "main" et le même avec les fonctions après "main"?
Merci
Version imprimable
Bonjour,
y a t-il une différence entre un programme dont les fonctions sont avant "main" et le même avec les fonctions après "main"?
Merci
Comme toutes autres fonctions, main() doit connaitre la signature (prototype) des fonctions qu'elle utilise, mais elle se moque du code interne. Donc si le prototype est declare avant main(), soit dans le meme fichier ou dans un fichier entete inclus, on peut mettre le code des autres fonctions ailleurs (apres main() ou dans une autre unite de compilation). Si la fonction n'est utilisee que dans l'unite de compilation en cours, on la qualifie avec static et il est d'usage de mettre son code avant la fonction principale de cette unite.
Etant donné qu'une définition de fonction intègre son prototype, il est simple et logique de définir les fonctions avant de les utiliser (donc de les placer avant le main() dans le bon ordre). Ca permet de bien voir les liens qu'il y a entre elles (qui appelle qui...)
Mais il est techniquement possible de placer les fonctions après. Il faut cependant fournir un prototype séparé avant.
La logique et le bon sens commandent alors de séparer les fonctions et les prototypes dans 2 fichiers séparés à inclure comme il faut : c'est la programmation modulaire (ou séparée) :
http://emmanuel-delahaye.developpez....ganiser_source
http://emmanuel-delahaye.developpez.....htm#organiser
Merci :)
Quand je fais le prototype de la fonction avant le main puis le code juste après j'ai une erreur disant "previous declaration of fonction was here" en m'indiquant la ligne du prototype.
je vais réorganiser mon programme selon vos conseils, et j'aimerai tout de même savoir s'il est possible de résoudre l'erreur que j'ai eu.
Généralement, ce genre d'erreur indique que la fonction est différente du prototype.
ça pour la fonction:
et ça c'est sont prototype :?Code:void affichage(struct list_event *tete)
c'est pas comme ça qu'on fait?Code:
1
2 void affichage(struct list_event);
Merci
ça fonctionne