ho una macro di preprocessore definito in impostazioni di generazionepreprocessore macro valore alla stringa di Objective-C letterale
FOO=BAR
Tale valore voglio massaggiare in una stringa Objective-C letterale che può essere passato a un metodo. Il seguente #define non funziona, ma dovrebbe dare prova di quello che sto cercando di realizzare:
#define FOOLITERAL @"FOO" //want FOOLITERAL to have the value of @"BAR"
myMethodThatTakesAnNSString(FOOLITERAL);
mi aspetto che io sono solo manca l'ovvio in qualche modo, ma io non riesco a trovare il giusto voodoo preprocessore per ottenere ciò che Ho bisogno.
Questo l'ha fatto. Avevo provato il double indirection, ma avevo anche il valore "@" come valore macro e questo sembra confonderlo. Una piccola differenza è che la prima linea non rappresenta il mio caso in quanto non recupera l'impostazione accumulo #define FOO FOOVAL #define STRINGIZE (x) #x #define STRINGIZE2 (x) STRINGIZE (x) #define FOOLITERAL @ STRINGIZE2 (FOOVAL) è ciò che effettivamente funziona per me. Ma la tua risposta mi ha portato lì. – vagrant
Ciao @vagrant. Questa soluzione funziona ancora per te con LLVM? Sto cercando di farlo funzionare, ma il valore effettivo di FOO definito nelle macro del preprocessore delle impostazioni di compilazione non viene mai visualizzato. Potresti aggiornare la tua domanda con la soluzione che funziona per te?Saluti. – epologee
Perché non solo '#define Helper (STR) @ # STR'? – tadeuzagallo