Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1430 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  *.cpp * .h ???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

*.cpp * .h ???

n°1033585
ares9907
Posté le 03-04-2005 à 15:31:27  profilanswer
 

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
mood
Publicité
Posté le 03-04-2005 à 15:31:27  profilanswer
 

n°1033598
Exo 7
Posté le 03-04-2005 à 16:00:29  profilanswer
 

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.

n°1033602
ares9907
Posté le 03-04-2005 à 16:07:14  profilanswer
 

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

n°1033607
Exo 7
Posté le 03-04-2005 à 16:21:00  profilanswer
 

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.

n°1033620
ares9907
Posté le 03-04-2005 à 16:35:41  profilanswer
 

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
n°1033645
Exo 7
Posté le 03-04-2005 à 16:56:54  profilanswer
 

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. }


n°1033656
ares9907
Posté le 03-04-2005 à 17:08:36  profilanswer
 

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
n°1033668
Exo 7
Posté le 03-04-2005 à 17:17:24  profilanswer
 

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

n°1033675
ares9907
Posté le 03-04-2005 à 17:25:17  profilanswer
 

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
n°1033710
Exo 7
Posté le 03-04-2005 à 17:57:42  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  *.cpp * .h ???

 

Sujets relatifs
Plus de sujets relatifs à : *.cpp * .h ???


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR