GCC 7.3 - 3.9. Directives Within Macro Arguments

मैक्रो तर्क के भीतर 3.9 निर्देश




gcc

मैक्रो तर्क के भीतर 3.9 निर्देश

कभी-कभी मैक्रो के तर्कों के भीतर प्रीप्रोसेसर निर्देशों का उपयोग करना सुविधाजनक होता है। C और C ++ मानक घोषित करते हैं कि इन मामलों में व्यवहार अपरिभाषित है। GNU CPP मैक्रो तर्कों के भीतर मनमाने निर्देशों को ठीक उसी तरह से संसाधित करता है जिस तरह से यह निर्देश संसाधित करता है कि फ़ंक्शन-जैसे मैक्रो मंगलाचरण मौजूद नहीं थे।

यदि, एक मैक्रो इनवोकेशन के भीतर, उस मैक्रो को फिर से परिभाषित किया जाता है, तो तर्क पूर्व-विस्तार के लिए नई परिभाषा समय में प्रभावी हो जाती है, लेकिन मूल परिभाषा अभी भी तर्क प्रतिस्थापन के लिए उपयोग की जाती है। यहाँ एक पैथोलॉजिकल उदाहरण दिया गया है:

#define f(x) x x
f (1
#undef f
#define f 2
f)

जिसका विस्तार होता है

1 2 1 2

ऊपर वर्णित शब्दार्थ के साथ।