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

Visual C++ Discussion :

Erreur de Link [VC++ 6.0]


Sujet :

Visual C++

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 81
    Points : 66
    Points
    66
    Par défaut Erreur de Link [VC++ 6.0]
    Bonjour,
    Je rencontre quelques petits problèmes avec mes variable globales.

    main.obj : error LNK2005 : struct personne Pers already defined in personne.h

    main.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      #include <stdio.h>
     #include <stdlib.h>
     #include main.h
     #include personne.h
    void main()
    {
        ...
    }
    personne.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     #include <stdio.h>
     #include <stdlib.h>
     #include personne.h
     
     ...
    personne.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    struct personne{
      char nom[30];
      int age;
    };
     
    personne Pers;
    Pour remedier a cette erreur j'ai essayé plusieurs solutions
    - #ifndef _PERSONNE_H_
    #define _PERSONNE_H_
    #endif

    - #pragma once

    - extern dans les .c

    Même sans code dans mes fichiers .c aucune de ces solutions a marchées.

    La seul solution que j'ai trouvée c'est de déclaré "personne Pers" dans le personne.c, et de le mettre en extern dans les autres fichiers, solution que je ne trouve pas très "correcte".

    J'ai esssayé de modifier les options du projet, mais cela n'a rien changé.
    J'ai l'impression que le preprocesseur ne prend pas en compte certaine instruction qui permette de ne pas passer deux fois dans un .h et je ne comprend pas pourquoi.

    Merci de votre aide.

  2. #2
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    dans personne.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    struct personne{
      char nom[30];
      int age;
    };
     
    extern personne Pers;
    dans personne.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     #include <stdio.h>
     #include <stdlib.h>
     #include personne.h
     personne Pers;
     ...

  3. #3
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 81
    Points : 66
    Points
    66
    Par défaut
    Je suis entierement d'accord, mais cela ne m'explique pas pourquoi les autres solutions ne fonctionnent pas.

    Je me contanterais des extern ...

  4. #4
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    personne Pers;

    est déclaré dans deux fichiers lors du link dans main.c et personne.c voilà pourquoi le linker se fache.

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

Discussions similaires

  1. erreur de link
    Par meli0207 dans le forum MFC
    Réponses: 6
    Dernier message: 04/05/2007, 10h17
  2. template et erreur de link
    Par Willand dans le forum Langage
    Réponses: 12
    Dernier message: 05/12/2006, 21h19
  3. erreur de link(age) g++
    Par corwin dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/05/2004, 11h33
  4. [wxWindows] Erreur de link pour ODBC
    Par ovh dans le forum wxWidgets
    Réponses: 3
    Dernier message: 28/01/2004, 15h38
  5. DirectDrawCreate erreur de link
    Par Ing_Ben dans le forum DirectX
    Réponses: 1
    Dernier message: 01/12/2002, 18h46

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