2012-04-18 22 views
10

Załóżmy, że chcę un-stringify argumentu makra, który powinien przekształcić "text" na text.Czy istnieje sposób na usunięcie cudzysłowów w makrze C?

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

Teraz nazywając to makro usunie "" od jej argumentu

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

To byłoby przeciwieństwem makro stringification:

#define STRINGIFY(x) #x 

Czy to możliwe, albo ja grając z makro zło?

+0

Co chciałbyś zrobić, gdyby to było możliwe? – iammilind

+3

To nie jest możliwe; z ciekawości, jakie jest przeznaczenie? – dasblinkenlight

+0

Cóż, zwykle użyłbym stringify, ale refactoruję niektóre makra i naprawdę nie chcę zmieniać wzorca wywołującego. '#define THIS_MACRO (sringParam) const char * var = stringParam;' zmieni się na '#define THIS_MACRO (stringParam) const char * un ## stringParam = stringParam;'. – syvex

Odpowiedz

15

To niemożliwe. I to chyba dobrze: jeśli zdasz ciąg, zakładasz, że możesz umieścić w nim prawie wszystko. Un-stringifying to nagle spowoduje, że kompilator będzie dbał o zawartość tego napisu.

Powiązane problemy