2012-04-18 15 views
10

मान लीजिए कि मैं अन-स्ट्रिंग मैक्रो तर्क चाहता हूं जो "text" को text में परिवर्तित करना चाहिए।क्या सी मैक्रो में उद्धरण हटाने का कोई तरीका है?

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

अब बुला इस मैक्रो अपने तर्क

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

से "" निकाल देंगे यह मैक्रो stringification के विपरीत होगा:

#define STRINGIFY(x) #x 

यह संभव है, या मैं मैक्रो के साथ खेल रहा हूँ evilness?

+0

यदि आप संभव थे, तो आप क्या करना चाहते थे? – iammilind

+3

यह संभव नहीं है; जिज्ञासा से बाहर, इरादा उपयोग क्या है? – dasblinkenlight

+0

ठीक है, आमतौर पर मैं केवल स्ट्रिंग का उपयोग करता हूं, लेकिन मैं कुछ मैक्रोज़ को दोबारा कर रहा हूं और वास्तव में कॉलिंग पैटर्न को बदलना नहीं चाहता हूं। '# परिभाषित करें THIS_MACRO (sringParam) const char * var = stringParam;' 'THIS_MACRO (स्ट्रिंगपार्म) कॉन्स्ट char * un ## stringParam = stringParam; 'को परिभाषित करेगा। – syvex

उत्तर

15

यह संभव नहीं है। और यह शायद एक अच्छी बात है: यदि आप एक स्ट्रिंग पास करते हैं तो आप मानते हैं कि आप इसमें सब कुछ डाल सकते हैं। अन-स्ट्रिंगिंग के परिणामस्वरूप अचानक संकलक वास्तव में उस स्ट्रिंग की सामग्री की देखभाल कर रहा था।

संबंधित मुद्दे