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 :

r�cup�rer le token d'un #define par sa value


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Ao�t 2012
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Ao�t 2012
    Messages : 8
    Par d�faut r�cup�rer le token d'un #define par sa value
    Bonjour, voil� je me pr�sente (c'est mon premier post) je suis �tudiant et actuellement en stage dans une boite d'informatique � l'�tranger et dans un programme que je debug je voudrais r�cup�rer le token d'un #define par sa value. Je m'explique. J'ai deux fichiers un cpp et un .h
    Dans mon .h j'ai pleins de #define token [value], dans mon .cpp il reconnait bien si je lui demande token il me dit [value] jusqu'� la tout va bien
    mais moi ce que je veut c'est lui demander [value] et qu'il me donne token
    et �a je sait pas comment faire...
    Au debut je voulais contourner le probl�me juste en faisant une lecture du .h et r�cup�rer les info mais le probl�me et que le programme tournera sur une machine qui ne dispose pas des .h
    Alors j'avais pens� tout simplement � mapper manuellement les info..
    Mais le probl�me est que si il y a une mise � jour du .h et donc des #define et bien je suis chocolat.. Je vous demande pas une solution toute faite je me doute que vous avez d'autre chose � faire mais j'ai beau chercher sur le forum et sur le net je ne trouve pas de solution � mon probl�me. Je pense qu'il doit y avoir une fonction du style get.. mais je ne trouve pas. Quelqu'un en sait plus sur ce genre d�op�ration ?
    Merci

  2. #2
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    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 153
    Billets dans le blog
    4
    Par d�faut
    Bonjour,

    ce que tu demandes est impossible par d�faut.
    Renseignes-toi avant toute chose sur ce qu'est un define (une macro).
    Ca n'a qu'une seule utilit� : remplacer la cha�ne par sa valeur avant la compilation.
    Et la passe n'est r�alis�e qu'une seule fois.

    Une fa�on de faire c'est des macros, mais avec des enums ou variables constantes et non des defines.
    Quelque chose comme �a devrait fonctionner
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    // fichier de définition def.h
    VALUE(blabla, 4);
    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
    20
    21
    #define VALUE(name, value) const long long name = value;
    #include "def.inc"
    #undef VALUE
     
    const char* GetNameByValue(int value)
    {
    #define VALUE(name, value) case value: return #name;
    switch (value) {
    #include "def.h"
      default: return "NOT FOUND";
     }
    #undef VALUE
    }
     
    long long GetByName(const char* szName)
    {
    #define VALUE(name, value) if (strcmp(#name, szName) == 0) return value;
    #include "def.h"
    return -1;
    #undef VALUE
    }
    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.

  3. #3
    Membre du Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Ao�t 2012
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Ao�t 2012
    Messages : 8
    Par d�faut
    Bonjour Bousk,

    et merci de ta r�ponse je comprend le fait que se soit impossible par defaut c'est une commande pr�processeur...

    Cependant mon probl�me et que je ne peut pas changer le .h car dans le temps se .h sera upgrad�.
    J'avou que j'ai pas d'id�e mes connaissances en C++ sont encore assez faible.

  4. #4
    Invit�
    Invit�(e)
    Par d�faut
    si tu peux pas toucher au .h, tu peux quand meme les parser.

    donc si c'est pour y acceder depuis le cpp, t'as qu'a ouvrir le .h et parser les #define

    Sinon tu peux aussi dire pourquoi t'as besoin de recuperer le nom a partir de la valeur, parce que c'est ca sent pas mal.

  5. #5
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    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 153
    Billets dans le blog
    4
    Par d�faut
    Le fait que le .h soit upgrad� est une fausse excuse.
    Une fois la syntaxe mise en place, il suffit de l'utiliser.

    Sinon ils changent d'id�e, parce qu'en plus d'�tre totalement anormale, ils ne veulent pas la rendre r�alisable.

    Dans l'absolu vouloir retrouver un nom � partir d'une valeur, � fortiori de macros, est, amha, indicateur de probl�me, voire de m�connaissance de m�canismes et/ou mauvaise utilisation des macros.
    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.

  6. #6
    Membre du Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Ao�t 2012
    Messages
    8
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Ao�t 2012
    Messages : 8
    Par d�faut
    Merci de vos r�ponses,

    c'est vrai que j'ai pas expliqu� le programme, en fait c'est un MQWrapper. En gros la partie dont je m'occupe retourne un code en fonction des errreurs qu'il y a dans la command argument, l'ensemble de code qu'il peut retourner est d�fini dans un .h fourni par IBM (donc �volutif dans le temps)
    Le programme fonctionne correctement et pour chaque erreur il me retourne le bon code associ�. Mais pour plus de clart� je voudrai afficher le nom de l'erreur. Ce nom est disponnible dans le .h d'IBM par les
    #define NOM_ERREUR 4
    Donc si j'ai compris c'est qu'initialement le code retourne NOM_ERREUR et que par l'emploi des #define du .h le code retourne 4.

    Je sais que c'est un peu confus mais c'est bien la tout le probl�me.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 12
    Dernier message: 08/09/2006, 10h05
  2. [c#] comment r�cup�rer le namespace d'une DLL par r�flection?
    Par Jayceblaster dans le forum Windows Forms
    R�ponses: 2
    Dernier message: 20/07/2006, 13h20
  3. R�cup�rer le path d'un fichier par formuaire ?
    Par Yekhen dans le forum Langage
    R�ponses: 6
    Dernier message: 30/05/2006, 20h22

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