mettre des _ pour forcer des " tabulations" c´est moche...
bon tu n´ouvre pas plusieurs page, c´est juste plusieurs fichier.
après ce préambule, la solution :
il faut que tu cré un fichier . h qui porte par exemple le nom de ton deuxième fichier.
dedans tu ne mets qu´une seule ligne :
void affichage(); / /ne pas oublier le ;
et au début de ton premier fichier tu mets :
mais ça ne marchera qui si la fonction affichage n´a pas besoin de donnée du premier fichier. Vu qu´elle ne prend par d´argument j´ai certain doute la dessus.
globalement on sépare en différend fichier des fonction qui n´ont pas trop de chose en commun, et pas juste n´importe quelle fonction pour tester.
Je vais essayer montrer comment faire:
-Ouvre Dev normalement, sans ouvrir de fichiers dednas
-Fichier-Nouveau-Projet
-Choisit Console en C++ et donne un nom
-Donne le chemin où tu veux que soit tes fichiers et donne un nom à ton fichier de projet
-Le fichier qui va s´ouvrir: tu le sélectionne, tu met ton code normalement:
using namespace std;
int main()
{
bonjour();
system("PAUSE>nul");
return 0;
}
-Le #include " Header.hpp" tu vas le créer normalement:
-Ajoute un fichier au projet, enregistre le sous le nom Header et avec l´extension hpp
Met dedans:
void Bonjour()
{
cout<<"BONJOUR!"<<endl;
}
-Compile et regarde le résultat, sa doit marcher ( si je me suis pas trompé)...
Remarques:
-Tu peux appeler ton header autrement, header sa veut dire " Fichier d´en-tête".
les directives dans les header commencants par # ( pour le precompilateur je crois, enfin je sais p´us) permettent de controler si ton fichier n´as pas été inclus plusieurs fois. Pour pas qu´il y ai de conflits.
-On y met généralement les prototypes mais pas les déclarations.
je crois que c´est tout.
Tu veux que je t´explique pour les prototypes et les déclarations?
Je vais essayer
et ![]()
oublie ce que t´as dit tav c´est une horreur.
sauf dans certain cas très précis si tu sais ce que tu fait, il ne faut jamais mettre de code dans un fichier . h ou . hpp mais seulement les header des fonctions.
ici dans le . hpp tu met le texte :
void Bonjour();
/ * les directive de précompilation sont pas très utile */
et tu crée un autre fichier fonction.cpp ( DANS ton projet) par exemple et dedans tu mets
usingnamespace std;
void Bonjour()
{
cout<<"BONJOUR!"<<endl;
}
et c´est tout. ( d´ailleur tu peut enlever du fichier principale le include iostream et using namespace std).
Dnob, merci bien mais ce que j´a dit n´est pas faux:
-On y met généralement les prototypes mais pas les déclarations. ( je l´ai écrit sur mon psot precemdent, relis-le).
Et j´ai même proposé de lui expliquer commet faire pour les protoypes, donc de faire un cpp pour chaque hpp.
ma seule erreur qui rend un programme qui ne marche pas a été de ne pas avoir mis iostream et le namespace std:: dans le header.
En plus j´ai jamais compris l´intêret de pas mettre de code dans un hpp vu que ca marche très bien! ( un programme de 1 000 lignes de code comme un programme de 50 lignes en consolee, en API Win32 ou avec OpenGL avec Win32) et sa évite d´avoir deux fois plus de fichiers dans un projet!
Alors explique-moi la bonne raison s´il-te-plait.
" les header des fonctions"
c´est les prototypes...
( pour une fois que je suis sûr de ce que je dis).
. .. et les directives de précompilation sont très utiles pour pas inclure plusieurs fois le même header dans d´autre fichiers cpp.
Ainsi tu peux utiliser un header dans deux autres header et chaque header tu peux l´inclure dans le main.cpp sans problèmes.
une bonne raison d´eviter le code dans un . h, c´est le temps de compilation.. Tu modifies une ligne dans ton . h et t´es bon pour recompiler les 40 . o qui en ont besoin.. Alors qu´une modif dans un . cpp tu recompiles que celui la et ca linke direct.
Apres, y´a des fois ou on n´a pas le choix, comme pour les inline ou les templates.
Pour ce qui est des forward decl. / proto / includes / implementations / blabla ca releve bcp de la preference personnelle, etant donne le nombre de possibilites pour proceder.
Fait gaffe a la casse Tav, t
et merde, message parti tout seul, et pas moyen de le virer.
Tav > Je disais donc : fait gaffe a la casse, ta fonction " bonjour" a un B majuscule dans ton header, et l´appelles avec un minuscule.
Insisite bien dans ton 1er message qu´on n´implémente pas de fonctions dans le . h mais dans un fichier . cpp associé.
( sauf le cas des templates fonctions)
Cependant, je pense que la gestion de plusieurs fichiers est davantage conseillée pour qq un qui a déja de l´expérience non ? ![]()
JYY: oui, un peu d´experience ne peut faire que le plus grand bien avant de se lancer dans les codes dans plusieurs fichiers.
Sinon, j´ai vu qu´il y avait des interogations sur le preprocesseur C. alors: http://www.mandragor.org/article.php?id=8
( decidement, je n´arrete pas de me citer ces temps ci)
Y´a une faute
dans le tutorial:
" [...] tandis que la forme " " la recherche d´abors dans le fichier source original associé ( la norme le dit comme ca, c´est pas moi qui complique.) [...] "
D´abord avec ´s´
.
Sinan il est pas mal est bien à la portée des débutants.
T´en a d´autres comme ca ou pas?
www.mandragor.org
merci pour la faute ( faudrait que je l´ai passe dans ispell)
Bonjour, de 1, utiliser plusieurs fichiers ca rame moin je crois, et de 2, c´est mon sale, et de 3, shepa.
Ca marche toujours pas
bon je dit tout ce que j´ai fait et vous aller me dire ce qui cloche :
J´ouvre un nouveau projet console application
Un fichier main.cpp qui contient :
using namespace std;
void Bonjour()
{
cout<<"BONJOUR!"<<endl;
}
Un fichier sansnom3.h qui contient :
void Bonjour();
Voila il sont enregistrés dans le meme dossier, ourquoi ca ne marche pas ?
Où est ton main ?
Où sotn tes includes ?
Le code :
/ / Bonjour.h
void Bonjour();
/ / Bonjour.cpp
using namespace std;
void Bonjour()
{
cout<<"BONJOUR!"<<endl;
}
/ / main.cpp
int main()
{
Bonjour();
return 0;
}
Zut, mettre :
Au début de main.cpp ; )
Oh ca marche
sympa, thanks Ptival! A plus !
Salut, je voulais savoir si en C++, il y avait une commande qui permettait d´agir sur la croix, le trait pour réduire, bref les petits trucs en hauts à droite la fenetre. Parce qu´en fait je voudrais que dans mon jeu ( j´utilise SDL) je voudrais que l´utilisateur clique sur la croix pour quitter le programme et non pas tape sur une touche.
Donc voilà, s´il y a une commande pour agir sur ces parametres pourriez vous me la donnez ( avec la librairie eventuellement ca peut servir si ce n´est pas dans SDL)
Merci ! !
thicot: il faut gerer l´evenment SDL_QuitEvent
http://sdldoc.csn.ul.ie/sdlquitevent.php
utiliser plusieurs fichiers ca rame moin je crois
On utilisait a la base l´expression ramer pour dire que la memoire de la machine était saturé et que l´on perdait du temps lors de l´acces a la partition de swap, mais je comprends ce que tu veux dire.
Si tu fais 2 fichiers, la phase de compilation sera plus courte. En effet, si tu ne change que l´un des deux fichier, tu n´as pas besoin de recompiler les deux...
et de 2, c´est mon sale
moins sale je ne sais pas, j´ai pas de trace de coca sur mon code! ![]()
Sans blague, ca te permet surtout de structurer ton programme comme tu le sens.
Souvent une bonne structure de fichier fera un truc du genre:
une class = un . h et un . cpp ( voir plusieurs dans les cas extremes)