Question 11.17

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