begin process at 2012 05 29 07:58:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Divers

 > 

Macro : renvoyer une chaîne avec une virgule


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Macro : renvoyer une chaîne avec une virgule

vendredi 6 février 2009 à 16:27:08 | Macro : renvoyer une chaîne avec une virgule

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

Je cherche désespérément à faire une macro qui renverrait une chaîne comprenant deux éléments séparés par une virgule.

printf(TO_STRING(a, b));
-> printf("a, b");

Celle-ci fonctionnerait très bien s'il n'y avait pas la virgule :
#define TO_STRING(val) #val

Je sais que je dispose de # pour faire une chaîne à partir d'un argument de macro, de ## pour concaténer deux arguments de macro, que les arguments sont évalués avant la substitution sauf si on utilise # ou ##... Et pourtant non je ne vois pas de solution à ce casse tête. On utilise parfois des parenthèses pour gérer les , mais je ne vois pas comment faire dans mon cas. Je ne veux pas "(a, b)". Par contre ("a, b") ne me dérangerait pas.

(
L'objectif au final étant de faire du code asm inline portable.

BEGIN_ASM
ASM(mov eax, 2)
END_ASM

Sous VC ->
__ams {
mov eax, 2
}

Sous gcc ->
__asm__ __volatile__ (".intel_syntax noprefix");
__asm__ __volatile__ ("mov eax, 2");
__asm__ __volatile__ (".att_syntax prefix");
)

Merci d'avance.
vendredi 6 février 2009 à 17:23:44 | Re : Macro : renvoyer une chaîne avec une virgule

gaspos

Réponse acceptée !
fastoche !

#define

TO_STRING(a,b) #a","#bet voilà :

printf( TO_STRING( 321,qsd )) ; // affiche "321,qsd"

Hadrien
vendredi 6 février 2009 à 17:25:17 | Re : Macro : renvoyer une chaîne avec une virgule

gaspos

Réponse acceptée !
il faut lire :

TO_STRING
(a,b) #a","#b

ce gros nigaud d'éditeur a fait sauter mon retour à ligne...
vendredi 6 février 2009 à 17:37:23 | Re : Macro : renvoyer une chaîne avec une virgule

rt15

Membre Club Administrateur CodeS-SourceS
Alors là je dis superbe. Merci gaspos !


Cette discussion est classée dans : macro, mov, asm, virgule, chaîne


Répondre à ce message

Sujets en rapport avec ce message

VC++ fait chier [ par GoldenEye ] Qui peut me dire comment on place le curseur où on veut et ce sans Borland ( conio.h et gotoxy aux chiottes donc ) sous DOS et avec VC++ 6.0 ( ça fait asm sous Dev-C++ [ par bolbtb ] Bonjour,J'ai trouvé çà sur cppfrance (à propos lire/écrire sur le port parallèle):ASM { mov dx,adr }sous Dev-Cpp je l'ai transformé en asm("mo ASM et C++ [ par sebastienbro ] Bonjour, j'aimerais savoir ce qui ne vas pas dans le code suivant. J'ai une erreur "error C2400: inline assembler syntax error in 'opcode'; found 'con [Asm][Devc++] [ par Gonath ] Bon voilà, je programme sur devc++ depuis peu. Je voudrais y insérer des codes en assembleur vu que je connais l'assembleur. Mais le prob, c qu'il n'a C++ et asm [ par Chouchou182 ] BonjourVoilà un extrait : __asm{ mov ah, 00h mov al, 13h int 10h }Aucun bug a la compilationAcess violation PB avec de l'ASM dans VC++ 6 .... [ par Foub12 ] Bonjour...Je programme sous VC++ 6 et j'ai trouvé sur Internet, la fonction suivante mais elle ne marche pas... Il compile parfaitement mais lors de l Secteur de boot : comment ordonner des commandes ??? [ par Foub12 ] Bonjour,j'ai une question qui me turlupine depuis un petit moment et j'aimerais bien connaître la réponse...Le secteur de boot (d'une disquette par ex Asm ou SM [ par Joky ] Et oui on voit pas trop la différence entre ces 2 choses lol :) Donc je suis entrain de lire un Tuto sur l'asm avec des ptits exemples n'ayant pas de [EXPERTS]optimisation du c/asm [ par MrdJack ] Bonsoir, je suis en train de me renseigner sur le c et l'asm niveau vitesse d'execution. en detail je me demande comment créer un code en c pour que s Code ASM dans projet CPP [ par FearBlue ] Slt a tous !!!$Je dev une appli en Cpp et je desire inclure de L'asm dedansJe compile avec gccVoici ce que je fais et ca fait grosse erreur :(:(:(:(  


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,218 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales