Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1821 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  BOOST_PP : concatener un caractère spécial

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

BOOST_PP : concatener un caractère spécial

n°1946405
guepe
J'ai du noir sur la truffe ?
Posté le 01-12-2009 à 18:57:01  profilanswer
 

J'utilise beaucoup BOOST_PP pour faire notamment  ma gestion des enums et leurs conversions en chaines de caracteres.
Cependant, je cherche à concatener une séquence de ce genre : a = 3 (pour l'exemple  :o )
 
A priori je ferai :
 

Code :
  1. BOOST_PP_CAT(BOOST_PP_CAT(SOME_VALUESF,=),1)


 
Cela ne fonctionne pas, le caractère = est incompris par le preprocesseur (en fait aucun des caractères spéciaux ne passe). À noter que si je remplace le caractère = par un _ celà fonctionne (mais ça ne fait pas du tout ce que je veux !)
 
Comment fait-on pour faire copier des caractères spéciaux ?  
Merci.


---------------
Un blog qu'il est bien
mood
Publicité
Posté le 01-12-2009 à 18:57:01  profilanswer
 

n°1946428
Un Program​meur
Posté le 01-12-2009 à 19:45:04  profilanswer
 

Si le résultat n'est pas un pptoken valide -- comme c'est vraisemblablement le cas -- toutes tes tentatives sont probablement vouées à l'échec (mais bon, sans savoir ce que tu veux faire, on peut toujours se tromper).


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°1946431
guepe
J'ai du noir sur la truffe ?
Posté le 01-12-2009 à 20:10:25  profilanswer
 

Un Programmeur a écrit :

Si le résultat n'est pas un pptoken valide -- comme c'est vraisemblablement le cas -- toutes tes tentatives sont probablement vouées à l'échec (mais bon, sans savoir ce que tu veux faire, on peut toujours se tromper).


A faire une liste de flags. Faire ca en preprocessor :

 

E_FIRST = 1, E_SECOND = 2, E_THIRD = 4, E_FOURTH = 8

 

Il est aisé de faire : E_FIRST, E_SECOND, E_THIRD avec BOOST_PP_ENUM( SEQ ), on peut aussi faire des assignations avec BOOST_PP_ENUM_PARAMS mais je voudrais une assignation qui augmente de façon exponentielle... Autant l'exponentielle est faisable, autant je n'ai pas trouvé de solutions avec BOOST_PP_ENUM_PARAMS donc je cherce à faire la mienne...

 

Je sais pas si c'est clair  :o


Message édité par guepe le 01-12-2009 à 20:11:03

---------------
Un blog qu'il est bien
n°1946440
Un Program​meur
Posté le 01-12-2009 à 20:56:22  profilanswer
 

Il ne faut rien concaténer,...

Code :
  1. #include <boost/preprocessor/seq.hpp>
  2. #include <boost/preprocessor/repetition.hpp>
  3. #include <boost/preprocessor/arithmetic/sub.hpp>
  4. #include <boost/preprocessor/punctuation/comma_if.hpp>
  5. #define FLAG_GEN_HELPER(z,n,sym) BOOST_PP_SEQ_ELEM(n,sym) = 1 << n BOOST_PP_COMMA_IF(BOOST_PP_SUB(BOOST_PP_SUB(BOOST_PP_SEQ_SIZE(sym),n),1))
  6. #define FLAG_GEN(symbols) BOOST_PP_REPEAT(BOOST_PP_SEQ_SIZE(symbols),FLAG_GEN_HELPER,symbols)
  7. FLAG_GEN((s1)(s2)(s3))


 


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°1946441
guepe
J'ai du noir sur la truffe ?
Posté le 01-12-2009 à 21:00:52  profilanswer
 

Punaise voila une solution simple et claire : /me retourne apprendre à coder je crois  :(  
 
Merci, je découvre la programmation preprocesseur   :sweat:


---------------
Un blog qu'il est bien

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  BOOST_PP : concatener un caractère spécial

 

Sujets relatifs
boost::intrusiveExecuter ou Concatener une commande sous Bat?
Chaine de caractère et HTMLboost::asio : trouver un port libre ?
Compilation avec boostprint caratere special
[VBA-E] Problème pour macro collage spécialboost time nanoseconds
[MySQL] encodage de caractère log windowsMacro Excel pour ajouter en caractère dans les cellules.
Plus de sujets relatifs à : BOOST_PP : concatener un caractère spécial


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR