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 :

MACRO et variable


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut MACRO et variable
    Bonjour,

    Je souhaiterais pouvoir concaténer un nom de macro et une variable de type "int" ensemble, afin d'avoir un nom de macro...

    J'ai dans mon fichier toto.h plusieurs macros :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #define NB_OBJET 3
     
    #define OBJET1_X1 100
    #define OBJET1_Y1 300
    #define OBJET1_Z1 150
     
    #define OBJET1_X2 0
    #define OBJET1_Y2 600
    #define OBJET1_Z2 230
     
    #define OBJET1_X3 340
    #define OBJET1_Y3 500
    #define OBJET1_Z3 10
    ensuite dans mon fichier toto.c :

    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
    17
    18
    19
    #include "toto.h"
    #define cat(x, y) x ## y
     
    void toto(void)
    {
     int i;
     
     i = 1;
     while (i <= NB_OBJET)
      {
       gere_objet(i);
       i++;
      }
    }
     
    void gere_objet(int i)
    {
      cat(OBJET1_X, i);
    }
    Mais le compilo me dit que OBJET1_Xi n'existe pas...

    Comment faire pour remplacer i par sa valeur et ce fait avoir mes macros OBJET1_X1, OBJET1_X2, OBJET1_X3 ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par matthieuuu Voir le message
    Comment faire pour remplacer i par sa valeur et ce fait avoir mes macros OBJET1_X1, OBJET1_X2, OBJET1_X3 ?
    C'est pas possible. Les macros, c'est statique. Elles sont développées dans les premières phases de la compilation. A l'exécution, il n'y a pas de macros. Ce que tu veux faire ne peut être fait en C. Par contre, les tableaux sont probablement la bonne alternative.
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    les tableaux sont probablement la bonne alternative.
    Comment changer le problème avec des tableaux en attribuant x fois mes valeurs de macros ? Je ne vois pas...
    Je suis obligé de garder mes macros afin de créer un fichier de configuration

    Merci

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par matthieuuu Voir le message
    Comment changer le problème avec des tableaux en attribuant x fois mes valeurs de macros ? Je ne vois pas...
    Je suis obligé de garder mes macros afin de créer un fichier de configuration
    avec un indice valant 0 à 2.

    Pas besoin de macros. Quel rapport avec le fichier de configuration ? Je crois que tu cherches une solution boiteuse à un problème bancale.

    Commence par expliquer clairement ce que tu veux faire (phase 1 - définition) sans penser 'réalisation' (phase 3 - codage). On verra ensuite comment faire (phase 2 - conception). Chaque chose en son temps.
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    avec un indice valant 0 à 2..
    Merci pour l'explication du tableau...

    Citation Envoyé par Emmanuel Delahaye Voir le message
    Commence par expliquer clairement ce que tu veux faire (phase 1 - définition) sans penser 'réalisation' (phase 3 - codage). On verra ensuite comment faire (phase 2 - conception). Chaque chose en son temps.
    Je vais voir comment faire alors, merci pour ton aide en tout cas, mon problème de départ sur les macros ne pouvant être réalisé en C, le sujet peut donc être passé en résolu.

    Merci encore

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/04/2010, 09h54
  2. Probleme Code Macro (Affectation variable?)
    Par Esmax666 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/06/2009, 10h23
  3. Appel macro avec variable
    Par malouxa dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/01/2009, 17h53
  4. [Macro] Création variable dans DATA _NULL_
    Par pierre24 dans le forum Macro
    Réponses: 8
    Dernier message: 18/07/2008, 09h56
  5. Macros et variables Publics
    Par MuadDib_II dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/06/2008, 12h17

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