2013-12-17 16 views
13

Quello che sto cercando di fare è di #define una macro:Espandere macro stringa all'interno letterale

#define a(2) 

e poi utilizzarlo all'interno di una stringa letterale: string = "a";.

Voglio che la stringa venga interpretata non come stringa ma per ottenere il valore di a, ad esempio 2. Non ho avuto successo, qualcuno può aiutarti?

+1

@Jefffrey - Quel cappello è stato creato appositamente per il tuo dinosauro. – Maroun

risposta

16
#define STRINGIFY2(X) #X 
#define STRINGIFY(X) STRINGIFY2(X) 
#define A 2 

Poi STRINGIFY(A) vi darà "2". È possibile concatenarlo con altri valori letterali stringa mettendoli uno accanto all'altro.

"I have the number " STRINGIFY(A) "." ti dà "I have the number 2.".

+2

Ora aggiungi l'elemento cruciale che i letterali stringa adiacenti sono concatenati e questa è una risposta. – pmr

4

No, non è possibile eseguire l'espansione di macro INSIDE letterali stringa (vale a dire che il preprocessore deve cercare all'interno di valori letterali per le macro da espandere).

È possibile avere un'espansione macro per produrre una stringa letterale che inizia con l'operatore stringify (#). Ma questa è una cosa diversa.

Problemi correlati