
Mes notes sur le C, partie 7 [Les prototypes et headers]
Les prototypes sont utile pour ordonner l’ordre de vos fonctions, en effet jusqu’à maintenant on devez écrire nos fonctions avant la fonction main, la fonction qui en appel une autre devait être placée après la fonction qui va être appeléz.
Cela est assez contraignant, l’intérêt des prototypes est justement de pallier à cette problématique.
Les prototypes servent donc à annoncer une fonction.
Normalement ce programme ne devrait pas compiler néanmoins certain IDE arrive à gérer le soucis en interne :
#include <stdio.h> int main(int argc, char *argv[]) { int result; result = multiplier(5, 2); printf("Le resultat est %d", result); } int multiplier(int nbr1, int nbr2) { int result; result = nbr1 * nbr2; return result; }
Maintenant, si vous voulez faire les choses comme il faut :
#include <stdio.h> int multiplier(int nbr1, int nbr2); int main(int argc, char *argv[]) { int result; result = multiplier(5, 2); printf("Le resultat est %d", result); } int multiplier(int nbr1, int nbr2) { int result; result = nbr1 * nbr2; return result; }
Grace au prototype que vous venez d’ajouter en haut du fichier, le compilateur à connaissance de la fonction et des paramètres éventuels qu’elle devra prendre.
Le nom des variables n’est pas obligatoire, on aurait tout aussi bien pu écrire le prototype comme ça :
int multiplier(int, int);
Maintenant que vous avez compris l’intéret des protypes nous allons voir comment découper notre programme en plusieurs fichiers.
Pour ça nous allons en apprendre plus sur la notion de “headers” et de librairie.
Vous savez la ligne tout en haut de votre fichier
#include <stdio.h>
Le .h est présent ici pour “headers”.
Un fichier avec l’extension .c signifie qu’il s’agit du fichier source.
Le fichier .h (headers) est composé des prototypes.
Pour charger ce fichier “header” vous devez faire comme pour
#include <stdio.h>
Il y a une chose importante à savoir, les chevrons < > qui entoure le fichier header stdio signifie que c’est une librairie interne et qu’elle se trouve dans un répertoire include de votre IDE.
Comment faire pour charger une librairie interne à notre projet ? il faut remplacer les chevrons < > par des guillemets double ” “.
Voici l’exemple de tout a l’heure avec un fichier .h
multiplier.h
int multiplier(int nbr1, int nbr2);
#include <stdio.h> #include "multiplier.h" int main(int argc, char *argv[]) { int result; result = multiplier(5, 2); printf("Le resultat est %d", result); } int multiplier(int nbr1, int nbr2) { int result; result = nbr1 * nbr2; return result; }
Il faut savoir que la transformation de votre programme en exécutable se déroule en 3 grandes phases.
1. Le préprocesseur qui se charge d’inclure les fichiers .h et .c
2. Le compilateur qui transforme votre code en binaire (suite de 0 et de 1)
3. Le linker qui rassemble les .o pour faire un .exe