Sto tentando di usare l'operatore ANSI di preprocessore di ``stringamento'' `#' per inserire il valore di una costante simbolica in un messaggio, ma continua a stringare il nome del macro piuttosto ch il suo vlaore.
Si puo` usare qualcosa come la seguente procedura a due passi per forzare un macro sia ad essere espanso che stringato:
#define Str(x) #x #define Xstr(x) Str(x) #define OP plus char *opname = Xstr(OP);Questo codice fissa opname a "plus" piuttosto che "OP".
Una equivalente circonlocuzione e` necessaria con l'operatore di incollamento degli argomenti ## quando i valori (piuttosto che i nomi) di due macro vanno concatenati.
Riferimenti:
ANSI Sez. 3.8.3.2, Sez. 3.8.3.5 example
ISO Sez. 6.8.3.2, Sez. 6.8.3.5
Leggere di seguito: prev prossima su cima
Questa pagina e` di Steve Summit // Copyright 1995 // mail feedback