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.