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

[C++] Problème de headers

ecaravanier
ecaravanier
Niveau 10
16 décembre 2011 à 21:44:50

Salut :noel:
Etant donné que je me suis mis à l'apprentissage du C++, j'ai adopté un moyen de fonctionnement sur CodeBlocks qui consiste à mettre mes fonctions d'abord dans main.cpp, puis ensuite de les déplacer dans un fichier "anciens.cpp" histoire de pouvoir les revoir par la suite si nécessaire. Donc là j'ai fait un petit jeu de Nombre Mystère (oui le même que sur le SdZ et non, je n'apprends pas avec le tuto du SdZ), et donc ma fonction principale du programme, je l'ai mise dans une fonction appelée "int nombreMystere()" et pas dans main(), pour pouvoir ensuite la deplacer facilement dans anciens.cpp, et ensuite pour utiliser ce programme j'ai qu'à mettre "nombreMystere();" dans main(). Ca marchait sans problème jusqu'à ce que je deplace toute les fonctions du programme dans anciens.cpp, depuis quand j'essaie de compiler ça me dit "undefined reference to nombreMystere()". Pourtant voila le contenu de mes différents fichiers:

main.cpp :

  1. include <iostream>
  2. include <stdlib.h>
  3. include <time.h>
  4. include "anciens.hpp"

using namespace std;

int main()
{
nombreMystere();
}

_________________________

anciens.hpp :

void nombreJoueurs(int* nombre);
void difficulte(int* niveau);
void trouver(int nombreMax, int nombreMystere);
int nombreMystere();

_________________________
anciens.cpp :

  1. include <iostream>
  2. include <stdlib.h>
  3. include <time.h>
  4. include "anciens.hpp"

Et ensuite toutes les fonctions dont il est question dans anciens.hpp :oui:

Voila, du coup je comprends pas trop où ça bloque, si vous voulez bien m'aider ce serait sympa s'il vous plait :ange:

ArgentComptant
ArgentComptant
Niveau 5
16 décembre 2011 à 21:58:28

Inclure plusieurs fois anciens.hpp ne pourrait-il pas poser problème ?

Rajoute des #ifndef et #define non ?

godrik
godrik
Niveau 30
16 décembre 2011 à 22:01:05

En effet, il est preferable de proteger anciens.hpp contre la multi inclusion. Cependant, ca n'apparait pas ici.

Le message d'erreur "undefined reference to nombreMystere()" indique un probleme de linkage. Le fichier objet genere par anciens.cpp est il correctement linke?

ecaravanier
ecaravanier
Niveau 10
16 décembre 2011 à 22:01:18

ArgentComptant => Ils y sont déja :-(

ecaravanier
ecaravanier
Niveau 10
16 décembre 2011 à 22:10:58

godrik => Comment je vérifie ça?

godrik
godrik
Niveau 30
16 décembre 2011 à 23:44:52

ca depends de ton IDE. mais si tu as les commandes de compilations, on devrait pouvoir arriver a te dire ca.

ecaravanier
ecaravanier
Niveau 10
17 décembre 2011 à 00:00:04

Le Build Log me donne ça quand je compile :

obj\Debug\main.o: In function `main':
D:/Programmation/C++/Console/main.cpp:11: undefined reference to `nombreMystere()'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 0 warnings

String[]args
String[]args
Niveau 23
17 décembre 2011 à 10:55:47

Il m'est arrivé le même problème quand j'utilisais encore Code::Blocks...
Vérifie que les deux cases-là sont cochées.
http://sournoishack.com/uploads/codeblocks.png
( Bon après je sais plus comment atteindre la fenêtre-là, ni s'il est possible de faire ça par défaut pour tous les fichiers donc je te laisse chercher. :o)) )

Pocolo
Pocolo
Niveau 10
17 décembre 2011 à 14:02:40

Les gens semblent toujours avoir des problèmes avec Code::Blocks. :(

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