les modules en C

Le
programmation
Bonjour,

Je veux organiser mon programme C avec Visual studio en des modules
*.h et *.c

Aussi, j'ai deux modules où chacun contient des fonctions qui aussi
appellent d'autres fonctions.
le module "traitement.h" doivent me retournent trois valeurs a, b et c
alors je fais les passer par adresse.

Je ne sais pas c'est l'organisation suivante est correcte ou non ?

Le programme principal "main.c" est :
Code : C
include <stdio.h">
include "traitement.h"
include "test.h"

int main()
{
int a=0,b=0,c=0;


test();
.
traitement(&a,&b,&c);
printf("%d %d % d",a,b,c);

return 0;

}




le code de "traitement .h" est :
Code : C

int fonction4()
{
.
.
// calcul
.
return a;
}

int fonction5()
{
.
.
// calcul
.
return b;
}

int fonction6()
{
.
.
// calcul
.
return c;
}

int fonction1()
{
.
.
a = fonction4();
return a;
}

int fonction2()
{
.
.
b = fonction5();
return b;
}

int fonction3()
{
.
.
c = fonction6();
return c;
}
int traitement(a,b,c)
int a,b,c;
{
.

a = fonction1();
b = fonction2 ();
c = fonction3 ();

return 0;
}



Le code de "test.h" esr :
Code : C

void afficher ()
{
.
.
printf(".");

return 0;
}

float calcul ()
{
.
cal =
return cal;
}

int test()
{
float tot = 0;

tot = calcul();
afficher();

return 0;
}


Qu'est ce que je mis dans les *.c et les *.h ?

J'ai besoin de vos aides pour que je puisse organiser mon programme C.

Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
marc
Le #19881301
programmation a écrit :

le code de "traitement .h" est :
Code : C

int fonction4()
{
.......
.......
// calcul
....
return a;
}



Dans les .h, il ne faut mettre que les declarations des fonctions
(dont le code - la definition - est dans les .c correspondants)..
programmation
Le #19882811
On 4 août, 12:58, marc
programmation a écrit :

> le code de "traitement .h" est :
> Code : C

> int fonction4()
> {
> .......
> .......
> // calcul
> ....
> return a;
> }

Dans les .h, il ne faut mettre que les declarations des fonctions
(dont le code - la definition - est dans les .c correspondants)..



merci.
J'ai mis les prototypes dans "*.h" et le code dans "*.c".
Mais, j'ai beaucoup des fonctions imbriquées dans le module alors dans
quel ordre je vais mettre les prototypes et le code de chaque fonction
dans "*.h" et "*.c" ?
marc
Le #19891071
programmation a écrit :

J'ai mis les prototypes dans "*.h" et le code dans "*.c".
Mais, j'ai beaucoup des fonctions imbriquées dans le module alors dans
quel ordre je vais mettre les prototypes et le code de chaque fonction
dans "*.h" et "*.c" ?



il n'y a pas d'ordre.
chaque .c inclus chaque .h correspondant , avec "extern" si besoin :
http://tigcc.ticalc.org/doc/keywords.html#extern
programmation
Le #19895471
On 6 août, 14:32, marc
programmation a écrit :

> J'ai mis les prototypes dans "*.h" et le code dans "*.c".
> Mais, j'ai beaucoup des fonctions imbriquées dans le module alors dan s
> quel ordre je vais mettre les prototypes et le code de chaque fonction
> dans "*.h" et "*.c" ?

il n'y a pas d'ordre.
chaque .c inclus chaque .h correspondant , avec "extern" si besoin :http: //tigcc.ticalc.org/doc/keywords.html#extern



Bonjour,

Je parle de l'ordre dans le fichier *.h.
Si on a plusieurs fonctions dans le *.h par exemple de fonctions
imbriquées et des fonctions appellent d'autres fonctions.
Vous pouvez voir les fonctions au dessus.
donc quel est l'ordre de déclaration de prototype de ces fonctions ?

Merci.
PYT
Le #19895691
> donc quel est l'ordre de déclaration de prototype de ces fonctions ?


Je crois que cela a déjà été dit : "Tu ne t'en préoccupe pas"

PYT
programmation
Le #19921201
On 7 août, 10:07, PYT
> donc quel est l'ordre de déclaration de prototype de ces fonctions ?

Je crois que cela a déjà été dit : "Tu ne t'en préoccupe pas"

PYT



Bonjour,

Je voulais utiliser des modules dans mon programme pour le
réutilisation de ces modules et la lisibilité du programme.

J'ai fait un petit exemple pour voir le syntaxe, la déclaration et la
définition est correcte ou non.

Ce programme permet de calculer la somme et le produit de deux
entiers.
Voici le module "calcul.h"

#ifndef __CALCUL_H
#define __CALCUL_H

int somme(int a, int b);
int multiplication(int a, int b);
void calcul();

#endif //__CALCUL_H



Voici le module "calcul.c"

#include #include #include "calcul.h"

int somme(int a, int b) {return a+b;}
int multiplication(int a, int b) {return a*b;}

void calcul()
{
int a,b, c,d;
printf("donner a=");
scanf("%d",&a);
printf("ndonner b =");
scanf("%d",&b),
c=somme(a,b);
d= multiplication(a,b);
printf("n c=%d et d=%d",c,d);
getch();
return 0;
}




Voici le programme principal "main.c"

#include #include #include "calcul.h"

void main()
{
printf("le calcul commencen");
calcul();
printf("fin de calcul n");
getch();
return 0;
}



Ce programme marche.

J'ai remarqué même si je copie le contenu de "calcul.c" dans
"calcul.h"j'utilise seulement "calcul.h" alors le programme s'exécute
bien.

Voici cette version sans "calcul.c" :

Le module "calcul.h" est :

#include #include
int somme(int a, int b) {return a+b;}
int multiplication(int a, int b) {return a*b;}

void calcul()
{
int a,b, c,d;
printf("donner a=");
scanf("%d",&a);
printf("ndonner b =");
scanf("%d",&b),
c=somme(a,b);
d= multiplication(a,b);
printf("n c=%d et d=%d",c,d);
return 0;
}


#include #include #include "calcul.h"

Le programme "main.c" est :
void main()
{
printf("le calcul commencen");
calcul();
printf("fin de calcul n");
return 0;
}



Donc, pourquoi on utilise dans la programmation modulaire les fichiers
"*.c" ?

Comment on écrit ce programme de manière correcte suivant le principe
de la programmation modulaire ?

Avez-vous autre solution ou proposition ?

Merci.
marc
Le #19922751
programmation a écrit :
J'ai remarqué même si je copie le contenu de "calcul.c" dans
"calcul.h"j'utilise seulement "calcul.h" alors le programme s'exécute
bien.

Donc, pourquoi on utilise dans la programmation modulaire les fichiers
"*.c" ?




C'est la base du C et des normes C89, C99,...,
sur lesquelles sont basés les compilos.
Lis le K&R pour avoir les bases.
programmation
Le #19936091
On 13 août, 13:46, marc
programmation a écrit :

> J'ai remarqué même si je copie le contenu de "calcul.c" dans
> "calcul.h"j'utilise seulement "calcul.h" alors le programme s'exécute
> bien.

> Donc, pourquoi on utilise dans la programmation modulaire les fichiers
> "*.c" ?

C'est la base du C et des normes C89, C99,...,
sur lesquelles sont basés les compilos.
Lis le K&R pour avoir les bases.



Bonjour,

J'ai utilise dans mon programme principal "main.c deux modules :
- "calcul.c" et "calcul.h"
- "traitement.c" et "traitement.h"
Est ce que je compile les modules puis le programme principal ou bien
le programme principal seulement ?
Est ce que je lance l'exécution à partir le programme principal ?

J'ai compilé les les modules puis le programme principal puis j'ai
lancé l'exécution à partir le programme principal.
Le programme marche bien. Mais, j'ai deux warning:

warning C4013: 'calcul' non défini(e) ; extern retournant int pris par
défaut
warning C4013: 'traitement' non défini(e) ; extern retournant int pris
par défaut

Comment on va résoudre ceci ?

J'ai mis dans "main.c"

#include "calcul.h"
#include "traitement.h"

J'ai mis dans "calcul.c"

#include "calcul.h"

J'ai mis dans "traitement.c"
#include "traitement.h"

le programme principal "main.c" est :

#include #include "calcul.h"
#include "traitement.h"
int main ()
{
.... ...
calcul ( );
traitement ();
........
return 0 ;
}



le module "calcul.h" est :

#ifndef__CALCUL_H
#define__CALCUL_H

//les prototypes des fonctions
...

#endif



le module "traitement.h" est :

#ifndef__TRAITEMENT_H
#define__TRAITEMENT_H

//les prototypes des fonctions
...
#endif



le module "calcul.c" est :

int calcul ()
{
.......
.......

return 0 ;
}


le module "traitement.c" est :

int traitement ()
{
.........
..........
return 0;
}


Merci.
Publicité
Poster une réponse
Anonyme