Probleme avec la programmation modulaire
Résolu
flo_rock_69
-
flo_rock_69 -
flo_rock_69 -
Bonjour, alors voila: il y a une petite chose que je n'ai pas bien compris, concernant la programmation modulaire en C, c'est que lorsque on a plusieurs fichier .c , comment peut on savoir dans quel ordre ils vont etre effectuer.
Par exemple pour essayer de comprendre, j'ai fait un projet contenant:
un fichier main.c :
un fichier main.h :
et un fichier testfonction.c
alors, voila, quand je compile le tout cela me fait
[dis un nombre
3
le quintuple de ce nombre est 15]
et la parti du fichier testfonction.c n'apparait pas !
Voila, bon vous trouverez sans doute ma question un peu stupide, mais c'est parceque je debute, donc soyez indulgents, et merci d'avance pour vos reponses ;)
Par exemple pour essayer de comprendre, j'ai fait un projet contenant:
un fichier main.c :
#include <stdio.h> #include <stdlib.h> #include "main.h" int main(int argc, char *argv[]) { int nombreEntre=0, nombreQuintuple=0; printf("dis un nombre\n"); scanf("%d", &nombreEntre); nombreQuintuple=quintuple(nombreEntre); printf("le quintuple de ce nombre est %d", nombreQuintuple); return 0; }
un fichier main.h :
int quintuple(int nombre) { return 5 * nombre; }
et un fichier testfonction.c
#include <stdio.h> #include <stdlib.h> void bonjour() { printf("Hello"); return 0; }
alors, voila, quand je compile le tout cela me fait
[dis un nombre
3
le quintuple de ce nombre est 15]
et la parti du fichier testfonction.c n'apparait pas !
Voila, bon vous trouverez sans doute ma question un peu stupide, mais c'est parceque je debute, donc soyez indulgents, et merci d'avance pour vos reponses ;)
A voir également:
- Probleme avec la programmation modulaire
- Application de programmation - Guide
- Forcer la fermeture d'un programme - Guide
- Programmation envoi sms - Guide
- Programmation vb - Télécharger - Langages
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
4 réponses
Bon alors deja, un fichier .h ne doit pas te servir pour coder tes fonctions, cela te sers a connaitre le prototype de ce qui est present dans ton .c.
Dans ton .h ne se trouve donc que des declarations (de fonctions, de structures, de constantes etc)
Dans ton .c se trouve le code.
Ceci etant dit, quand tu vas compiler tes fichiers, des fichiers objets vont se creer pour chaque .c et vont tous se regrouper dans un fichier executable pour donner ton programme.
Le point d'entree de ton programme est la fonction main.
Donc lors de l'execution, main() est appelee en premier.
Ainsi:
Tu crees 2 variables
Tu ecris "dis un nombre" sur la sortie standard
Tu attends que l'utilisateur ecrive un nombre sur l'entree standard
Tu affectes le resultat de la fonction quintuple(nombreEntre) a ta variable. Grace au import "main.h" tu sais que cette fonction existe.
Tu ecris sur la sortie stantard "le quintuple de ce nombre est" et le contenu de ta variable
Tu sors de la fonction main (donc du programme) en renvoyant 0 (qui est la valeur de retour de ton programme, generalement 0 veut dire que tout s'est bien passe)
Dans ton .h ne se trouve donc que des declarations (de fonctions, de structures, de constantes etc)
Dans ton .c se trouve le code.
Ceci etant dit, quand tu vas compiler tes fichiers, des fichiers objets vont se creer pour chaque .c et vont tous se regrouper dans un fichier executable pour donner ton programme.
Le point d'entree de ton programme est la fonction main.
Donc lors de l'execution, main() est appelee en premier.
Ainsi:
int nombreEntre=0, nombreQuintuple=0;
Tu crees 2 variables
printf("dis un nombre\n");
Tu ecris "dis un nombre" sur la sortie standard
scanf("%d", &nombreEntre);
Tu attends que l'utilisateur ecrive un nombre sur l'entree standard
nombreQuintuple=quintuple(nombreEntre);
Tu affectes le resultat de la fonction quintuple(nombreEntre) a ta variable. Grace au import "main.h" tu sais que cette fonction existe.
printf("le quintuple de ce nombre est %d", nombreQuintuple);
Tu ecris sur la sortie stantard "le quintuple de ce nombre est" et le contenu de ta variable
return 0;
Tu sors de la fonction main (donc du programme) en renvoyant 0 (qui est la valeur de retour de ton programme, generalement 0 veut dire que tout s'est bien passe)
Pour repondre a la deuxieme partie de ta question, tu vois bien que ton programme ne fait JAMAIS appel a la fonction "bonjour()" presente dans testfonction.c
En fait, tu as a ta disposition la fonction "bonjour()" (a la seule condition de faire un import "testfonction.c"), mais ici tu ne t'en sers pas dans ton programme, donc elle sera jamais appelee.
Si tu veux juste avant le "return 0;", tu peux ecrire "bonjour();" (n'oublies pas de rajouter #import "testfonction.c")
Mais la encore il serait preferable de definir le protoype de la fonction bonjour dans un testfonction.h et d'en ecrire le code dans le testfonction.c. Comme ca tu fais import "testfonction.h", car on ne fait jamais d'import de .c
Et Hello s'affichera avant que le programme se finisse
En fait, tu as a ta disposition la fonction "bonjour()" (a la seule condition de faire un import "testfonction.c"), mais ici tu ne t'en sers pas dans ton programme, donc elle sera jamais appelee.
Si tu veux juste avant le "return 0;", tu peux ecrire "bonjour();" (n'oublies pas de rajouter #import "testfonction.c")
Mais la encore il serait preferable de definir le protoype de la fonction bonjour dans un testfonction.h et d'en ecrire le code dans le testfonction.c. Comme ca tu fais import "testfonction.h", car on ne fait jamais d'import de .c
Et Hello s'affichera avant que le programme se finisse
Bonjour,
La fonction Main s'exécute à l'ouverture de l'appli (ou à la compilation)
Les autre fonctions doivent être appelées.
Ajoute bonjour() juste en première ligne de Main.
A+
La fonction Main s'exécute à l'ouverture de l'appli (ou à la compilation)
Les autre fonctions doivent être appelées.
Ajoute bonjour() juste en première ligne de Main.
A+
Merci a vous pour vos reponses, mais j'avais justement fini par trouve la solution juste avant que vous ne repondiez, et j'ai compris en effet qu'il fallait faire appel a ma fonction bonjour dans le main, mais je nai pas eu besoin de #import...
Et merci pour le conseil en ce qui s'agit de seulement declarer les fonctions dans les .h, car je debute, et la je suis un peu perdu ...
Et merci pour le conseil en ce qui s'agit de seulement declarer les fonctions dans les .h, car je debute, et la je suis un peu perdu ...