[C++] erreure definitions multiples
Résolu
Wazza6
Messages postés
180
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'essaie de compiler un programme que je viens de terminer, mais je reçois les erreures suivantes:
C:\Users\Gabriel\Documents\Programming\TruthOrDare\main.cpp|25|multiple definition of '_main'| obj\Debug\main.o:
C:\Users\Gabriel\Documents\Programming\TruthOrDare\main.cpp|25|first defined here|
Pour chaque fonction dans mon main.cpp
Je devine que mon main.cpp est inclu en boucle,je l'ai inclu dans game.cpp pour avoir access a mes variables globales (ne me dites pas de ne pas les utiliser parceque[...], je sais) , mais j'ai essayé d'éviter ça en utilisant #ifndef.
Voici les parties les plus importantes de mon code (le code complet est trop long)
main.cpp
game.cpp
main.h et game.g ne contiennent que des declarations, mais si elles peuvent aider les voici:
game.h
main.h
Est-ce que quelqu'un sait comment régler ce probleme?
Merci d'avance.
Regardez ma devise!
J'essaie de compiler un programme que je viens de terminer, mais je reçois les erreures suivantes:
C:\Users\Gabriel\Documents\Programming\TruthOrDare\main.cpp|25|multiple definition of '_main'| obj\Debug\main.o:
C:\Users\Gabriel\Documents\Programming\TruthOrDare\main.cpp|25|first defined here|
Pour chaque fonction dans mon main.cpp
Je devine que mon main.cpp est inclu en boucle,je l'ai inclu dans game.cpp pour avoir access a mes variables globales (ne me dites pas de ne pas les utiliser parceque[...], je sais) , mais j'ai essayé d'éviter ça en utilisant #ifndef.
Voici les parties les plus importantes de mon code (le code complet est trop long)
main.cpp
#ifndef MAIN_CPP #define MAIN_CPP #include <iostream> #include <fstream> #include <windows.h> #include <vector> #include <string> #define FILE_TRUTH "data/config/truth.dat" #define FILE_DARES "data/config/dare.dat" #define FILE_DARES_D "data/config/dare_dirty.dat" using namespace std; bool dirty; extern vector<string> truths; extern vector<string> dares; extern string *names; #include "main.h" #include "game.h" int main() { ... } #endif
game.cpp
#ifndef _GAME_CPP #define _GAME_CPP #include "game.h" #include <windows.h> #include <conio.h> #include <string.h> #include "main.cpp" int size_dares; int size_truths; int game(int players) { ... } #endif
main.h et game.g ne contiennent que des declarations, mais si elles peuvent aider les voici:
game.h
#ifndef GAME_H #define GAME_H int game(int); #endif
main.h
#ifndef GAME_H #define GAME_H int game(int); #endif
Est-ce que quelqu'un sait comment régler ce probleme?
Merci d'avance.
Regardez ma devise!
A voir également:
- [C++] erreure definitions multiples
- Prestashop déclinaisons multiples ✓ - Forum Créer un site
- Technique de paris multis (ou multiples) ✓ - Forum Loisirs / Divertissements
- Erreur de segmentation c - Forum C
- Choix multiples excel - Guide
- Affichage écrans multiples - Guide
2 réponses
OK, j'ai mis les declarations des variables globales dans main.h, mais maintenant les fonctions de main.cpp n'y ont pas accès, j'ai verifié et main.h est inclu dans main.cpp. Et j'ai ajouté extern devant, ca donne
Qe'est-ce que je peux faire?
extern vector<string> truths; ...
Qe'est-ce que je peux faire?
Wazza6
Messages postés
180
Date d'inscription
Statut
Membre
Dernière intervention
40
ok j'ai reusssi...
Salut.
Plus que l'utilisation des variables globales, ce que je critiquerais ici, c'est l'inclusion de .cpp.
Je pense que tu as trouvé la bonne manière d'utiliser des variables globales : les mettre dans un vrai .h avec extern devant et les déclarer sans extern dans un .cpp.
Le problème que tu as ici, c'est que la plupart du temps, les compilateurs compile tout les .cpp, donc ici main.cpp et game.cpp, seulement ces deux unités de compilation contienent la fonction main() (puisque tu l'inclus dans game.cpp), d'où erreur lors de l'édition des liens.
Plus que l'utilisation des variables globales, ce que je critiquerais ici, c'est l'inclusion de .cpp.
Je pense que tu as trouvé la bonne manière d'utiliser des variables globales : les mettre dans un vrai .h avec extern devant et les déclarer sans extern dans un .cpp.
Le problème que tu as ici, c'est que la plupart du temps, les compilateurs compile tout les .cpp, donc ici main.cpp et game.cpp, seulement ces deux unités de compilation contienent la fonction main() (puisque tu l'inclus dans game.cpp), d'où erreur lors de l'édition des liens.