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 :

Création d'une macro avec un paramètre


Sujet :

C

  1. #1
    Membre actif
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2006
    Messages : 245
    Points : 232
    Points
    232
    Par défaut Création d'une macro avec un paramètre
    Bonjour à toi qui veut bien prendre la peine de me lire (et de me répondre, peut-être même carrément, qui sait ?)

    Voici mon problème :
    J'ai, à une zone mémoire fixée (c'est moche, mais c'est comme ça ), une structure possédant 16 d'éléments. Ces éléments sont en 3 groupes de 5 (et un qui sert pas à grand chose, mais bon).
    Un des ces trois groupes à un nom Config1_BoutonA (où A va de 1 à 5).

    J'utilise cette structure dans une boucle (pour accéder à chaque élément de chaque groupe), et, pour ne pas refaire la totalité de mon code déjà existant, je voulais écrire une macro du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define conf1(A) Config1_Bouton##A
    et l'utiliser en écrivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for (i=0; i<5; i++) {
        if (machin < conf1(A)) {
            printf("Schümrtz\n");
        }
    }
    Or, à la compilation, j'ai le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Config1_Boutoni undefined
    J'en ai déduit, dans ma grande intelligence, que, décidément, les macros en devaient pas permettre de le faire. Suis-je réellement super intelligent, ou ma connerie n'a-t-elle pas de limites ?

    Comment puis-je faire pour accéder à cette zone mémoire facilement, sans écrire de multiples fonctions tordues à base de pointeurs ?

    Merci d'avance, lecteur, pour ta splendide réponse.
    Les gens croient qu'il est agréable d'être un super-génie, mais s'ils savaient à quel point il est difficile d'être entouré de super-crétins !
    Calvin dans Calvin et Hobbes (Bill Watterson)

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    En faisant cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (i=0; i<5; i++) {
        if (machin < conf1(A)) {
    tu attendais que le test soit machin < Config1_Bouton1 jusque machin < Config1_Bouton5?
    Cela ne peut pas fonctionner, puisque i ne se voit affecter une valeur qu'a l'execution, bien apres le passage du pre-processeur...
    La solution la plus simple est certainement de faire un tableau de Config1_Bouton* (en general, quand on numerote les variables, c'est qu'il aurait fallu faire un tableau).

  3. #3
    Membre averti Avatar de cmoibal
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2007
    Messages : 361
    Points : 414
    Points
    414
    Par défaut
    Voici un example d'utilisation des MACRO avec des arguments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    #define DEBUG(msg, arg...)     printf(msg,##arg)
    "La créativité est faites d'attention et de respect pour les petits faits de la vie."

  4. #4
    Membre actif
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2006
    Messages : 245
    Points : 232
    Points
    232
    Par défaut
    Merci DaZumba, c'est bien ce qu'il me semblait...
    Les gens croient qu'il est agréable d'être un super-génie, mais s'ils savaient à quel point il est difficile d'être entouré de super-crétins !
    Calvin dans Calvin et Hobbes (Bill Watterson)

  5. #5
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    Citation Envoyé par cmoibal Voir le message
    Voici un example d'utilisation des MACRO avec des arguments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    #define DEBUG(msg, arg...)     printf(msg,##arg)
    Cela ne fonctionne qu'avec un compilo C99....
    Cela exclut donc pas mal de compilos C (en premier lieu ceux de Microsoft ....)
    Et donc, en pratique pas très portable !
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

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

Discussions similaires

  1. [OpenOffice] [Présentation] Exécuter une macro avec un paramètre
    Par citronbleu-v dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 28/06/2013, 13h41
  2. [WD-2010] Création d'une macro avec une condition
    Par jijidu67 dans le forum VBA Word
    Réponses: 8
    Dernier message: 05/12/2011, 15h41
  3. [Toutes versions] Affecter un bouton à une macro avec des paramètres
    Par nerixm dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/03/2011, 14h47
  4. Réponses: 8
    Dernier message: 10/12/2007, 16h27
  5. Passer un paramètre à une macro avec Application.run
    Par ouskel'n'or dans le forum VBA Word
    Réponses: 1
    Dernier message: 05/10/2007, 15h20

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