*.cpp * .h ???

*.cpp * .h ??? - C++ - Programmation

Marsh Posté le 03-04-2005 à 15:31:27    

Voilà, j'ai fais un programme qui TOURNAIT, il était crée comme suit :
menu.cpp <= Permet d'afficher mon menu principal, et de lancer d'autre fonction, par exemple :fonction1, fonction2 etc..
Pour créer ces autres fonctions, je créeais fonction1.cpp, fonction2.cpp ....
 
Bref, j'ai appris que ce n'est pas du tout comme ça qu'il faut faire, mais qu'il faut créer sa fonction main, dans "Sources files" donc *.cpp
Et mes autres fonctions dans "Headers files" donc *.h  
 
Est-ce vraiment ça ? Je n'ai pas saisis le principe...
Et si je crée fonction1.h, pourrais-je dans ma fonction1 appeler une autre fonction (fonction2 par ex.) qui elle est aussi un fichier *.h
 
En gros, si j'ouvre à chaque fois un nouveau fichier pour créer une nouvelle fonction, il doit etre *.h ou *.cpp ???
Le main est un fichier  *.cpp et les autres fonctions des fichier *.h c'est ça?
 
Merci


Message édité par ares9907 le 03-04-2005 à 15:33:01
Reply

Marsh Posté le 03-04-2005 à 15:31:27   

Reply

Marsh Posté le 03-04-2005 à 16:00:29    

heu non pas du tout
les .h contiennent les déclarations de fonctions (C) ou de classe/méthode (C++)
les .c / .cpp contiennent l'implémentation de ce qui a été déclaré dans .h du même nom.

Reply

Marsh Posté le 03-04-2005 à 16:07:14    

Je peux déclarer toutes mes fonctions seulement .cpp ?
Et donc au final n'avoir que des .cpp! Possible?

Reply

Marsh Posté le 03-04-2005 à 16:21:00    

La bonne pratique veut que l'on ne fasse que des #include de fichiers .h
Tu mets le minimum nécessaire (ce qui doit etre visible dans le reste du programme) dans le .h
 
exemple dans foo.h :

Code :
  1. #ifndef FOO_H
  2. #define FOO_H
  3. class Foo
  4. {
  5. public :
  6.    Foo() {}
  7.   ~Foo() {}
  8.    /** Affiche "coucou". Oui c'est un exemple stupide*/
  9.    void bar();
  10. };
  11. #endif


 
et dans foo.cpp :

Code :
  1. #include <iostream>
  2. #include "foo.h"
  3. void Foo::bar()
  4. {
  5.   std::cout << "coucou" << endl;
  6. }


 
 
Dans les autres fichiers du programme ou tu as besoin de ta classe Foo, tu fais juste un #include "foo.h". L'interet c'est que tu n'as pas besoin de regarder comment est fait l'implémentation pour comprendre comment l'utiliser : le prototype de la méthode "bar" déclarée dans le .h et le commentaire associé te suffit.

Reply

Marsh Posté le 03-04-2005 à 16:35:41    

Hm mouais, lol je ne comprends pas trop ton prog!Trop évolué pour moi :p!
Alors si j'ai bien compris :
 
Fichier .h

Code :
  1. #include<stdio.h>
  2. int somme(int x,int y)
  3. {
  4.   int resultat;
  5.   resultat=x+y;
  6.   return resultat;
  7. }


 
Et là, c'est ma fonction principal en .cpp

Code :
  1. #include<stdio.h>
  2. #include "somme.h"
  3. void main();
  4. {
  5. int a,b,addition;
  6. scanf("%d",&a);
  7. scanf("%d",&b);
  8. addition=somme(a,b);
  9. printf("%d + %d = %d",a,b,somme);
  10. }


 
J'ai compris?


Message édité par ares9907 le 03-04-2005 à 16:37:11
Reply

Marsh Posté le 03-04-2005 à 16:56:54    

non mais c'est mieux :D  
bon alors déjà tu fais du C et pas du C++
 
 
somme.h :

Code :
  1. #ifndef SOMME_H
  2. #define SOMME_H
  3. /**@return la somme de x et y*/
  4. int somme(int x, int y);
  5. #endif


 
somme.c

Code :
  1. #include "somme.h"
  2. int somme(int x, int y)
  3. {
  4.   return x+y;
  5. }


 
dans ton fichier avec le main :

Code :
  1. #include<stdio.h>
  2. #include "somme.h"
  3. int main(int argc, char *argv[])
  4. {
  5. int a,b,addition;
  6. scanf("%d",&a);
  7. scanf("%d",&b);
  8. addition=somme(a,b);
  9. printf("%d + %d = %d",a,b,somme);
  10. return 0;
  11. }


Reply

Marsh Posté le 03-04-2005 à 17:08:36    

Heu, bon, en gros, je peux créer que des .c et pas me prendre la tete avec les .h .....???
SOMME_H ??? veut dire?
A part ça :

Code :
  1. #ifndef SOMME_H //obligatoire? en debut..??  
  2. #define SOMME_H
  3. /**@return la somme de x et y*/
  4. int somme(int x, int y);
  5. #endif// <= marque la fin ??


Message édité par ares9907 le 03-04-2005 à 17:11:12
Reply

Marsh Posté le 03-04-2005 à 17:17:24    

Ca permet d'éviter de recompiler n fois la même chose si tu fais n #include "somme.h" dans ton programme.
 
Sur le pourquoi du comment qu'on utilise un fichier d'header en C, je te recommande la lecture de cette page
http://www.infini-fr.com/Sciences/ [...] first.html

Reply

Marsh Posté le 03-04-2005 à 17:25:17    

Bon, heu pour me simplifier la tache, je peux pour chaque (lourde)fonction créer un .c ... ??
Et n'avoir que des .c ?


Message édité par ares9907 le 03-04-2005 à 17:26:03
Reply

Marsh Posté le 03-04-2005 à 17:57:42    

Regroupe tes fonctions qui ont un rapport dans le même module
Je vais pas te forcer à appliquer la norme si tu ne veux pas le faire

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed