CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

J´aide les personne en C/C++

dnob700
dnob700
Niveau 10
01 juin 2005 à 21:21:10

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 :

  1. include " nom du fichier . h"

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.

Tav
Tav
Niveau 5
01 juin 2005 à 21:23:27

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:

  1. include < iostream>

using namespace std;

  1. include " Header.hpp"

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:

  1. ifndef HEADER_HPP
  2. define HEADER_HPP

void Bonjour()
{
cout<<"BONJOUR!"<<endl;
}

  1. endif

-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?

dynoplasmma
dynoplasmma
Niveau 9
01 juin 2005 à 21:30:25

Je vais essayer :ok: et :merci:

dnob700
dnob700
Niveau 10
01 juin 2005 à 23:01:15

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 :

  1. ifndef HEADER_HPP
  2. define HEADER_HPP

void Bonjour();

  1. endif

/ * 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

  1. include < iostream>

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

Tav
Tav
Niveau 5
02 juin 2005 à 07:00:03

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" :honte: c´est les prototypes...

( pour une fois que je suis sûr de ce que je dis).

Tav
Tav
Niveau 5
02 juin 2005 à 07:02:19

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

LGV
LGV
Niveau 28
02 juin 2005 à 10:10:48

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.

JeanYvesYves
JeanYvesYves
Niveau 10
02 juin 2005 à 10:11:44

Fait gaffe a la casse Tav, t

JeanYvesYves
JeanYvesYves
Niveau 10
02 juin 2005 à 10:13:33

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 ? :)

godrik
godrik
Niveau 30
02 juin 2005 à 11:44:55

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)

Tav
Tav
Niveau 5
02 juin 2005 à 12:05:42

Y´a une faute :o)) 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´ :rire: .

Sinan il est pas mal est bien à la portée des débutants.
T´en a d´autres comme ca ou pas?

godrik
godrik
Niveau 30
02 juin 2005 à 13:18:06

www.mandragor.org
merci pour la faute ( faudrait que je l´ai passe dans ispell)

dynoplasmma
dynoplasmma
Niveau 9
02 juin 2005 à 18:46:27

Bonjour, de 1, utiliser plusieurs fichiers ca rame moin je crois, et de 2, c´est mon sale, et de 3, shepa.

dynoplasmma
dynoplasmma
Niveau 9
02 juin 2005 à 18:54:37

Ca marche toujours pas :snif2: 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 :

  1. include < iostream>

using namespace std;
void Bonjour()
{
cout<<"BONJOUR!"<<endl;
}

Un fichier sansnom3.h qui contient :

  1. ifndef HEADER_HPP
  2. define HEADER_HPP

void Bonjour();

  1. endif

Voila il sont enregistrés dans le meme dossier, ourquoi ca ne marche pas ?

Ptival
Ptival
Niveau 10
02 juin 2005 à 19:41:02

Où est ton main ?
Où sotn tes includes ?

Le code :

/ / Bonjour.h

  1. ifndef HEADER_HPP
  2. define HEADER_HPP

void Bonjour();

  1. endif

/ / Bonjour.cpp

  1. include " Bonjour.h"
  2. include < iostream>

using namespace std;
void Bonjour()
{
cout<<"BONJOUR!"<<endl;
}

/ / main.cpp

int main()
{
Bonjour();
return 0;
}

Ptival
Ptival
Niveau 10
02 juin 2005 à 19:41:27

Zut, mettre :

  1. include " Bonjour.h"

Au début de main.cpp ; )

dynoplasmma
dynoplasmma
Niveau 9
02 juin 2005 à 20:58:34

Oh ca marche :merci: sympa, thanks Ptival! A plus !

Thicot
Thicot
Niveau 10
03 juin 2005 à 13:22:12

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 ! !

godrik
godrik
Niveau 30
03 juin 2005 à 13:37:24

thicot: il faut gerer l´evenment SDL_QuitEvent
http://sdldoc.csn.ul.ie/sdlquitevent.php

godrik
godrik
Niveau 30
03 juin 2005 à 13:42:17

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)

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment