जैसा कि मेरे पिछले कई सवालों में बताया गया है, मैं K & R के माध्यम से काम कर रहा हूं, और वर्तमान में प्रीप्रोसेसर में हूं। अधिक दिलचस्प चीजों में से एक - सी सीखने के लिए मेरे किसी भी पूर्व प्रयास से पहले मुझे कभी भी पता नहीं था - ##
प्रीप्रोसेसर ऑपरेटर है। K & R के अनुसार:
प्रीप्रोसेसर ऑपरेटर
##
मैक्रो विस्तार के दौरान वास्तविक तर्कों को समझने का एक तरीका प्रदान करता है। यदि रिप्लेसमेंट टेक्स्ट में एक पैरामीटर समीप है##
, तो पैरामीटर को वास्तविक तर्क द्वारा बदल दिया जाता है,##
और आसपास के सफेद स्थान को हटा दिया जाता है, और परिणाम फिर से स्कैन किया जाता है। उदाहरण के लिए, मैक्रोpaste
अपने दो तर्क प्रस्तुत करता है:
#define paste(front, back) front ## back
इसलिए
paste(name, 1)
एक टोकन बनाता हैname1
।
वास्तविक दुनिया में कोई इसका उपयोग कैसे और क्यों करेगा? इसके उपयोग के व्यावहारिक उदाहरण क्या हैं, और क्या विचार करने के लिए गोचर हैं?
std::wstring BuildDate = WIDEN(__DATE__) L" " WIDEN(__TIME__);
और एक ही बार में पूरे स्ट्रिंग का निर्माण कर सकते हैं।