IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Les variables globales en C++


Sujet :

C++

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 84
    Points : 75
    Points
    75
    Par défaut Les variables globales en C++
    Je sais pas bien d'utiliser des variables globales en C++, c'est pas objet et tout... Mais là je suis obligé. Je n'obtient que des erreurs à l'utilisation de variable globale.

    Donc plutôt qu'une grande explication j'ai résumé mon problème dans un exemple simple :

    classeVisibility.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #ifndef __CLASSE_VISIBILITY_H__
    #define __CLASSE_VISIBILITY_H__
     
    class MaClasse {
      int j;
    public:
      MaClasse(int i);
      void Fonction();
    };
     
     
    J'obtien
    #endif /*__CLASSE_VISIBILITY_H__*/
    classeVisibility.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <iostream>
    using namespace std;
    #include "classeVisibility.h"
     
    MaClasse::MaClasse(int i){
      j = i;
    }
     
    void MaClasse::Fonction(){
      cout << "Entrée dans la fonction" << j <<endl;
    }
    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include "classeVisibility.h"
     
    MaClasse classe(0) ;
    char toto;
     
    main(){
      classe.Fonction();
    }

    Les erreurs obtenue sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    g++ -dbx -c -o testCompilOnly/man.o testCompilOnly/main.cpp
    g++ -dbx -c -o testCompilOnly/classeVisibility.o testCompilOnly/classeVisibility.cpp
    g++ -dbx -o test testCompilOnly/man.o testCompilOnly/classeVisibility.o
    /usr/lib/gcc/i586-mandriva-linux-gnu/4.0.1/../../../crt1.o: In function `_start':
    ../sysdeps/i386/elf/start.S:115: undefined reference to `main'
    testCompilOnly/man.o:(.ctors+0x0): undefined reference to `global constructors keyed to classe'
    testCompilOnly/classeVisibility.o:(.ctors+0x0): undefined reference to `global constructors keyed to _ZN8MaClasseC2Ei'
    collect2: ld returned 1 exit status
    make: *** [accueil] Erreur 1
    ça une journée que j'ai ces erreurs de linkage et je n'arrive vraiment pas en voir la source y a une bonne âmes altruiste qui pourrait m'aider à résouvdre mon problème ?

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 84
    Points : 75
    Points
    75
    Par défaut
    Bon bais comme souvent c'est expliquant mon problème sur le forum que je l'ai solutionné.

    Il s'agissait du flag dbx qui posait problème. Je l'ai supprimé et tout compile parfaitement, par contre je ne sais pas à quoi il sert quelqu'un à des informations la dessus ?

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Points : 84
    Points
    84
    Par défaut
    Salut,
    Le logiciel DBX est un logiciel qui permet de lire les fichiers core.
    Je suppose que ton option permet la création de ces fichiers

  4. #4
    Membre éclairé Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Points : 795
    Points
    795
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ../sysdeps/i386/elf/start.S:115: undefined reference to `main'
    En c++, main doit retourner un int il me semble...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int main()
    {
    //
    return 1;
    }
    d'où un second problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    collect2: ld returned 1 exit status
    Et ou sont tes varaiables globales?
    Je vois bien l'objet de type MaClasse, mais comme variable globale, je ne
    vois que la char "toto" qui n'est jamais utilisée.

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 84
    Points : 75
    Points
    75
    Par défaut
    disons que mon problème de compilation était sur un largement plus gros programme....

    Et je présentais ce code car j'avais isolé mon problème de manière à pouvoir en trouver l'origine ce que j'ai fait en enlevant le -dbx.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/04/2006, 01h10
  2. Réponses: 13
    Dernier message: 21/11/2005, 11h05
  3. Supprimer la mémoire utilisée par les variables globales
    Par dnaprotector dans le forum OpenGL
    Réponses: 4
    Dernier message: 21/07/2005, 13h18
  4. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo