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 :

evaluation de macro, resultat sous forme de string


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut evaluation de macro, resultat sous forme de string
    Bonjour,

    Je cherche à faire un truc spécial avec le préprocesseur et je n'y arrive pas.

    J'ai une macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define RGB(rouge,vert,bleu) ((COLORREF)(((BYTE)(rouge)|((WORD)((BYTE)(vert))<<8))|(((DWORD)(BYTE)(bleu))<<16)))
    C'est pour créer une couleur à partir de ses 3 composantes rouge, vert et bleu.

    Le calcul de RGB(255,255,255) me donne le nombre 16777215 ce qui est correct.

    Maintenant, ce que je voudrais faire et ce que je n'arrive pas : MA_MACRO(rouge,vert,bleu) pour que cela me donne comme résultat ==> L"16777215"

    J'arrive à créer une string ou a évaluer ma macro sous forme de nombre mais pas les 2 à la fois

    Quelqu'un saura t'il me donner la solution ?

    Merci d'avance
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Bonsoir,

    Je ne pense pas que ce soit possible en C standard, car ton cas de figure s'appuie sur des macros récursives, qui ne sont en principe pas faisables. Certains compilateurs peuvent néanmoins s'appuyer sur des macros précédemment définies, mais je ne me souviens plus dans quelles conditions en particulier.

    Le calcul de RGB(255,255,255) me donne le nombre 16777215 ce qui est correct.
    C'est là toute l'origine du problème : ce n'est pas le pré-compilateur et sa macro qui te donnent cette valeur. Ils ne se contentent que de te renvoyer la chaîne définie en substituant les paramètres par ceux passés entre parenthèses. C'est le compilateur lui-même qui, ensuite, résout cette expression et la réduit à une simple constante lorsque tous les termes de l'équation sont connus à l'avance. Il te faudrait donc, pour que ce soit faisable, faire un hypothétique cycle « pré-compilateur → compilateur → pré-compilateur ».

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 152
    Billets dans le blog
    4
    Par défaut
    Bonsoir,

    ne serait-ce pas possible avec un code comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define MA_MACRO(rgb) L ## #rgb
    #define MA_MACRO_2(r,g,b) MA_MACRO(RGB(r,g,b))
    ?

    D'après ce que je trouve dans crtdefs.h (sous visual 2010)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #ifndef _CRT_STRINGIZE
    #define __CRT_STRINGIZE(_Value) #_Value
    #define _CRT_STRINGIZE(_Value) __CRT_STRINGIZE(_Value)
    #endif
     
    #ifndef _CRT_WIDE
    #define __CRT_WIDE(_String) L ## _String
    #define _CRT_WIDE(_String) __CRT_WIDE(_String)
    #endif
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par Bousk Voir le message
    ne serait-ce pas possible avec un code comme ça:
    non, cela ne marche pas (j'avais déjà essayé)

    Sur ce code, cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const wchar_t *p = MA_MACRO_2(255,255,255);
    , au debugger, p vaut : "RGB(255,255,255)", la macro RGB n'est pas évaluée.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    ce n'est pas le pré-compilateur et sa macro qui te donnent cette valeur. Ils ne se content que de te renvoyer la chaîne définie en substituant les paramètres par ceux passés entre parenthèses. C'est le compilateur lui-même qui, ensuite, résout cette expression et la réduit à une simple constante lorsque tous les termes de l'équation sont connus à l'avance.
    J'avais bien le "sentiment" d'un truc comme cela (sans savoir le formaliser aussi bien).

    Je vais continuer à chercher (mais j'ai de sérieux doutes) et sinon, je changerai de stratégie.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/04/2007, 15h53
  2. appel de <jsp:include page="" /> sous form de String
    Par Smix007 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 02/04/2007, 10h09
  3. Récupérer les paramètres "GET" sous forme de String
    Par vanitom dans le forum Langage
    Réponses: 2
    Dernier message: 22/02/2007, 15h00
  4. [JDBC] récuperer n'importe quel champ sous forme de String
    Par Hervé Saladin dans le forum JDBC
    Réponses: 3
    Dernier message: 31/05/2006, 10h04
  5. [Stratégie]Résultat d'une formule sous forme de String
    Par leminipouce dans le forum Langage
    Réponses: 12
    Dernier message: 21/02/2006, 11h40

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