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 :

inclusion, define: quel ordre de priorité ?


Sujet :

C

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 277
    Points : 141
    Points
    141
    Par défaut inclusion, define: quel ordre de priorité ?
    Pour faire simple, j'ai un projet avec des .c et des .h:

    Dans toto.c j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define TUTU
    #include <fic.h>
    Dans d'autres fichiers.c j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <fic.h> /* sans #define TUTU avant ou après */
    dans fic.h j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #ifdef TUTU
    int var[256] = { 0, 1, ... }
    #else
    extern int var[256];
    #endif
    Peut-il arriver un cas (pb de makefile, pb d'inclusions multiples ou ??) ou j'accède au tableau var sans que celui-ci ne soit initialisé ?

    Merci,

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 369
    Points : 23 623
    Points
    23 623
    Par défaut
    Bonjour,

    Il n'y a pas d'ordre de priorité : le préprocesseur traite les directives une seule fois (ce qui interdit, par exemple, les définitions de macro récursives) et dans l'ordre où il les trouve.

    Syntaxiquement, tu ne pourras pas accéder au tableau sans l'avoir déclaré avec le système que tu utilises (donc pas de segfault). Par contre, il est tout-à-fait possible, en cas de Makefile mal écrit, comme tu le cites, que « TUTU » ne soit défini nulle part ou, au contraire, à plusieurs endroits. Tout ceci se traduira par une erreur à l'édition des liens, donc après la compilation mais avant la production de l'exécutable final.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 277
    Points : 141
    Points
    141
    Par défaut
    Merci... je n'ai plus qu'à m'appliquer pour faire le makefile

    ==> Résolu

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

Discussions similaires

  1. Quel algorithme pour classer des opérations par ordre de priorité
    Par verbose dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 16/06/2014, 11h11
  2. Quel ordre utiliser pour les contraintes sur les tables ?
    Par Icewall dans le forum Langage SQL
    Réponses: 14
    Dernier message: 20/04/2008, 19h52
  3. [SQL] ordre de priorité (AND, OR) dans une condition if
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/06/2006, 21h12
  4. [IDE][VS]Quel ordre d'installation d'une plateforme Web/IIS?
    Par gondek dans le forum Visual Studio
    Réponses: 1
    Dernier message: 03/03/2006, 16h21
  5. Dans quel ordre ranger les vertices ?
    Par legend666 dans le forum OpenGL
    Réponses: 5
    Dernier message: 10/10/2005, 10h01

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