Estoy intentando crear una definición de macro que puede emitir C++ o Objective-C dependiendo del contexto pero no parece poder construir un NSString dentro de una macro fácilmente. La versión de C++ es simple, ya que utiliza cuerdas regulares, pero haciendo que emite NSString está demostrando ser difícil:Definición del preprocesador de Objective-C, declaración dinámica de C-String a NSString
#define FOO(x) bar(@##x)
el resultado que se pretende es convertir una cadena de argumentos para una discusión NSString anteponiendo con @
:
FOO("x")
// => bar(@"x")
Lo que obtengo en cambio, es un error que impide su compilación:
Pasting formed '@"x"', an invalid preprocessing token
'CFSTR' es prometedor pero es un' CFStringRef' y no un 'NSString *'. – tadman
@tadman son uno y lo mismo, y están libres de puente. –
@tadman: CFStringRef = NSString. – Dani