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 :

Pb de remplacement de Macro et Préprocesseur


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 20
    Par défaut Pb de remplacement de Macro et Préprocesseur
    Bonjour,

    J'utilise un préprosseur pour convertir des fichiers (*.sc) contenant du SQL embarqué pour Ingres.
    Les instructions sont remplacées dans le fichier c générés par des appels à des fonctions natives Ingres.

    Du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    EXEC FRS PUTFORM :ecran (
          champ_toto = :toto
    );
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (IIfsetio(ecran) != 0) {
          IIputfldio("champ_toto",(short *)0,1,30,4,&toto);
    }
    Ici champ_toto représente un libellé sur un écran (form) dont on voudrait changer la valeur avec celle contenu dans la variable toto.

    Je voudrais remplacer champ_toto par une macro de type FIELD_TOTO car souvent utilisé dans mon code.

    Le pb c'est que le préprocesseur crée ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (IIfsetio(ecran) != 0) {
          IIputfldio("FIELD_TOTO",(short *)0,1,30,4,&toto);
    }
    Et la chaine de caractère n'est du coup pas remplacé par le compilateur C.

    Auriez-vous une astuce à me proposer ?

    Note: pas possibilité de changer la moindre option de pré-processing ou de compilation, cela impactérais le travail de tous mes autres collègues qui se foutent royallement de mon envie de coder proprement ;-)

  2. #2
    Membre émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par défaut
    Tu peux peut-être essayer ça (aucune garantie car il faut que ta moulinette (.sc->.c) soit assez "basique"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #define FIELD_TOTO champ_toto
     
    EXEC FRS PUTFORM :ecran (
          " #FIELD_TOTO " = :toto
    );
    Pour que ta moulinette le change en:
    qui devrait être remplacé par qui vaut

  3. #3
    Membre averti
    Inscrit en
    Octobre 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 20
    Par défaut
    Merci pour ton intervention mais j'ai trouvé ! C'était ton bête !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const char* field_toto = "champ_toto";
     
    EXEC FRS PUTFORM :ecran (
          :field_toto = :toto
    );
    C'est les : qui font toute la différence, ils indiquent au précompil qu'il ne doit pas recopier tel quel le nom de la variable mais plutôt d'interpréter celle-ci.

    J'avais la réponse devant moi car c'est la même utilisation qui est faite de la variable ecran.

Discussions similaires

  1. [XL-97] recherche et remplace en macro
    Par reinruof77 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/04/2012, 17h34
  2. Macro Remplacer tabulation
    Par liop49 dans le forum Général VBA
    Réponses: 2
    Dernier message: 24/04/2007, 11h54
  3. [VBA-E]remplacer à l'aide d'une macro
    Par colombine28 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/03/2007, 05h47
  4. Réponses: 2
    Dernier message: 14/11/2005, 13h33
  5. [MASM] Définir "ordre de remplacement" des macros
    Par Crisanar dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 24/11/2004, 16h35

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