Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

steiner

j'ai un problème de compréhension en C++

Messages recommandés

Voila je débute en C++ et j'ai un petit problème :P , je n'arrive pas à me repérer dans le nom des fichier :-( ... Je m'explique dans les nom de fichier il y a tjr .h ou .c ou .cpp ect... . Voila j'aimerai ke vs m'expliquier a koi ça sert.

 

 

Je vs remercie d'avance

Partager ce message


Lien à poster
Partager sur d’autres sites

je suis pas calé en C, mais tu sais ce que c'est qu'une extension ?

Un fichier est composé de 2 parties dans son nom : son nom, et son extension. Par exemple les fichiers crées avec Microsoft Word ont .DOC comme extension, donc si tu crée un fichier nommé "Lettre à Robert", le fichier s'appelle en fait "Lettre à Robert.doc".

Chaque type de fichier a une extension, pour la vidéo en général c'est .MPG ou .AVI, pour les images ça peut être par exemple .BMP ou .JPG.

 

Dans windows à chaque extension est associée un programme, donc quand tu veux ouvrir "Lettre à Robert.doc", windows regarde avec quel programme s'ouvre un .DOC, il voit que c'est Microsoft Word, et donc il ouvre Word pour ouvrir ton fichier.

 

Les programmes ont eux l'extension .EXE, pour dire à windows qu'il faut les EXEcuter.

 

Bon, j'ai pas dit ça pour rien, le .C c'est l'extension d'un fichier en langage C et le .CPP c'est l'extension d'un fichier en langage CPlusPlus (C++).

Le .H c'est des librairies liées au C je crois, mais je sais pas comment expliquer ça en détail.

Partager ce message


Lien à poster
Partager sur d’autres sites

Et la terminaison des fichiers sert aussi aux compilateur

 

Et de plus généralement dans un fichier C++, le header (en-tete) sera le plus generalement #include <iostream>

 

iostream est en fait iostream.h, c'est une bibliothéque ou se trouve plein de fonction comme l'affichage (cout), la saisie (cin) tout les operateur +, -, *, /, = et ainsi de suite

 

Généralement lorsque tu crée un .cpp, pour faire je ne sais quel programme, tu utilise un .h

 

Par exemple si tu declare 2 fonctions A et B, tu les utilisera dans le main du .cpp, dans l'ordre de ton choix, petit exemple

 

........................ Dans le .h ...................................

 

#ifndef _exemple

#define _exemple

 

 

#include <iostream>

using namespace std;

 

int a();

int b();

 

#endif

 

 

........................ Dans le .cpp .................................

 

#include "exemple.h" //il faut qu'il soit dans le meme repertoire que le .cpp

 

int a(){ return 0; }

 

int b(){ return 1; }

 

int main(){

 

cout<<a()<<endl;

 

cout<<b()<<endl;

 

}

 

 

................................................................................

 

 

Le .h te permet d'utiliser les fonction dans n'importe quel ordre, puisqu'elle seront deja pret enregistrer sur la mémoire

 

voila voila

 

j'éspére avoir été assez clair, ne connaissant pas ton niveau, il est difficile de bien expliquer

Partager ce message


Lien à poster
Partager sur d’autres sites

en gros :

.h => header file

 

comme son nom l'indique tu déclares tes fonctions c'est a dire que tu donnes juste leurs entetes, en mettant le define comme il te l'as decrit dans l'optique de faire de la programmation modulaire

 

.c et cpp : la tu implementes les fonctions donc tu réecris completement tes fonctions entete et corps

 

le but, en fait pour plus tard c'est de faire de la programmation modulaire :

imaginons que t'es besoin de fonctions pour effectuer des operations sur des nombres complexes par exemple

 

tu vas definir un fichier complexe.h ou tu declareras tes fonctions par exemple

Complexe addition (Complexe c1,Complexe c2);

Complexe soustration (Complexe c1,Complexe c2);

 

dans le fichiercomplexe.c tu implementes tes fonctions

Complexe addition (Complexe c1,Complexe c2)

{

Complexe temp =.....

temp.x = c1.x + c2.x;

temp.y = c1.y + c2.y;

return temp;

}

 

bref une fois cela terminé tu as un fichier complexe.c et complexe.h

ces deux fichiers forment le module complexe

 

l'avantage, c'est que le jour ou tu cree un gros programme necessitant des calculs sur les nombres complexes par exemple, il te suffit d'inclure le module a ton program principal et tu n'as plus besoin de rien coder...tu réutilises ce que t'as déjà codé

 

voila en gros le but

 

note aussi qu'on inclue toujours un .h jamais un .c !

Partager ce message


Lien à poster
Partager sur d’autres sites

Ouh là...

 

Les fichiers .h ou .hpp ("header" pour du C ou du C++, respectivement) sont des fichiers texte reprenant les déclarations des types, des constantes et des prototypes des fonctions trouvées dans le fichier .c ou .cpp correspondant. Ils sont utilisés pour :

1 - se concentrer sur l'implémentation dans les fichiers .c ou .cpp

2 - être réutilisés par d'autres composants qui n'ont besoin que de connaitre les prototypes des fonctions, ou qui utilisent certaines constantes

3 - pouvoir utiliser des fonctions se trouvant dans des bibliothèques n'existant qu'au format binaire précompilé (meilleur exemple : vous ne recompilez pas les fonctions de stdio à chaque fois que vous codez en C)

 

Les fichiers .c ou .cpp correspondent à l'implémentation à proprement parler. Ils renferment le code source à compiler.

 

Lors de la compilation, on obtient des fichiers .o (objets), qui peuvent soit être rassemblés dans une bibliothèque de fonctions, soit être transformés en binaire exécutable (s'ils contiennent une fonction main())

 

Je résume :

h = déclarations

c = implémentation

o = résultat une fois le fichier c compilé

Partager ce message


Lien à poster
Partager sur d’autres sites
Ouh là...

 

 

???????

 

 

Les fichiers .h ou .hpp ("header" pour du C ou du C++, respectivement) sont des fichiers texte reprenant les déclarations des types, des constantes et des prototypes des fonctions trouvées dans le fichier .c ou .cpp correspondant. Ils sont utilisés pour :

1 - se concentrer sur l'implémentation dans les fichiers .c ou .cpp

2 - être réutilisés par d'autres composants qui n'ont besoin que de connaitre les prototypes des fonctions, ou qui utilisent certaines constantes

3 - pouvoir utiliser des fonctions se trouvant dans des bibliothèques n'existant qu'au format binaire précompilé (meilleur exemple : vous ne recompilez pas les fonctions de stdio à chaque fois que vous codez en C)

 

Les fichiers .c ou .cpp correspondent à l'implémentation à proprement parler. Ils renferment le code source à compiler.

 

Lors de la compilation, on obtient des fichiers .o (objets), qui peuvent soit être rassemblés dans une bibliothèque de fonctions, soit être transformés en binaire exécutable (s'ils contiennent une fonction main())

 

Je résume :

h = déclarations

c = implémentation

o = résultat une fois le fichier c compilé

c pas a peu pres ce que j'ai dit...??..

Partager ce message


Lien à poster
Partager sur d’autres sites
(...) une fois cela terminé tu as un fichier complexe.c et complexe.h

ces deux fichiers forment le module complexe

 

l'avantage, c'est que le jour ou tu cree un gros programme necessitant des calculs sur les nombres complexes par exemple, il te suffit d'inclure le module a ton program principal et tu n'as plus besoin de rien coder...tu réutilises ce que t'as déjà codé

 

voila en gros le but

 

note aussi qu'on inclue toujours un .h jamais un .c !

A priori, on peut croire qu'un programme utilisant un "module" externe a besoin de ses sources (le .h et le .c, puisque c'est ce que tu désignes par "module"). Ce n'est pas le cas.

Le .h suffit (car l'inclusion d'un .h sert à spécifier au compilateur que l'on connait les prototypes de ces fonctions et qu'il n'a pas à se soucier de leur implémentation - qui se trouve ailleurs - On laisse le soin au linker de les retrouver tout seul plus tard)... sauf si tu as oublié de fournir l'objet ou la bibliothèque contenant cette fonction à ton linker.

 

C'est effectivement "a peu près" ce que tu as dit, mais c'est le "a peu près" qui me gène.

Dans ces cas-là on a très vite fait de comprendre un truc de travers, il vaut mieux choisir très scrupuleusement ses mots et ne laisser aucune place à l'incompréhension. (Oui, je sais, je suis très chiant) :-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×