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 :

Problème d'inclusions multiples


Sujet :

C

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Points : 230
    Points
    230
    Par défaut Problème d'inclusions multiples
    Je pensais avoir compris comment protéger mon fichier d'entête, mais ce code ne fonctionne pas, et je ne vois pas pourquoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    /* main.c */
    #include <stdio.h>
    #include <stdlib.h>
     
    #include "main.h"
    #include "second.h"
     
    int main(int argc, char *argv[])
    {
     
      printf("mon texte : %s\n", texte) ;
     
      system("PAUSE");	
      return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /* main.h */
    #ifndef H_MAIN_H
    #define H_MAIN_H
     
    const char *texte = "bla !" ;
     
    #endif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /* second.c */
    #include "second.h"
     
    void ma_fonction(char *par) {
      printf("mon texte : %s", par) ;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /* second.h */
    #ifndef H_SECOND_H
    #define H_SECOND_H
     
    #include "main.h"
     
    void ma_fonction(char *par) ;
     
    #endif
    DEVCPP me renvoit un "multiple definition of 'texte'.

    Ca marche très bien pour les prototypes de fonctions pourtant...

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 589
    Points
    41 589
    Par défaut
    L'erreur n'est pas à la compilation, mais à l'édition de liens.

    TU définis texte une fois dans chaque source.
    - Soit tu dois en faire une même variable, instanciée dans un source et déclarée en extern dans les en-têtes,
    - soit tu continues à la définir dans chaque source, mais tu la déclares en static

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Points : 230
    Points
    230
    Par défaut
    Merci, tu viens de me corriger une idée reçue que je traînais depuis le début de mon apprentissage du C

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

Discussions similaires

  1. Problème d'inclusion "multiple" de headers
    Par NeMo_O dans le forum C
    Réponses: 12
    Dernier message: 21/05/2008, 22h25
  2. Problème d'inclusion de pages.
    Par julien85 dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 01/05/2005, 19h06
  3. Problème d'ajout multiples dans un BDD Access
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/05/2004, 14h34
  4. Problème d'inclusion
    Par degreste dans le forum MFC
    Réponses: 5
    Dernier message: 27/01/2004, 01h56
  5. Réponses: 6
    Dernier message: 25/03/2002, 22h11

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