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