2012-04-18 14 views
10

Supongamos que quiero anular la cadena el argumento de macro que debe transformar "text" en text.¿Hay alguna manera de eliminar las comillas en una macro C?

#define UN_STRINGIFY(x) /* some macro magic here */ 

Ahora llama a esta macro eliminará "" de su argumento

UN_STRINGIFY("text") // results in ----> text 

Esto sería lo contrario de stringification macro:

#define STRINGIFY(x) #x 

Es esto posible, o estoy jugando con macro ¿maldad?

+0

¿Qué quería hacer si fuera posible? – iammilind

+3

Eso no es posible; por curiosidad, ¿cuál es el uso previsto? – dasblinkenlight

+0

Bueno, normalmente usaría stringify, pero estoy refacturando algunas macros y realmente no quiero cambiar el patrón de llamadas. '#define THIS_MACRO (sringParam) const char * var = stringParam;' cambiaría a '#define THIS_MACRO (stringParam) const char * un ## stringParam = stringParam;'. – syvex

Respuesta

15

No es posible. Y eso es probablemente una buena cosa: si pasas una cadena, supones que puedes poner todo en ella. Desvincularlo de repente resultaría en que el compilador realmente se preocupe por el contenido de esa cadena.

Cuestiones relacionadas