GCC 7.3 - 3.10.1. Misnesting

३.१०.१ मिसिंग




gcc

३.१०.१ मिसिंग

जब किसी मैक्रो को तर्कों के साथ बुलाया जाता है, तो तर्कों को मैक्रो बॉडी में प्रतिस्थापित किया जाता है और परिणाम की जाँच की जाती है, साथ में अधिक मैक्रो कॉल के लिए इनपुट फ़ाइल के बाकी हिस्सों के साथ। मैक्रो बॉडी से आंशिक रूप से और आर्गुमेंट से आंशिक रूप से आने वाली मैक्रो कॉल को एक साथ पीसना संभव है। उदाहरण के लिए,

#define twice(x) (2*(x))
#define call_with_1(x) x(1)
call_with_1 (twice)
     → twice(1)
     → (2*(1))

मैक्रो परिभाषाओं में संतुलित कोष्ठक होना आवश्यक नहीं है। मैक्रो बॉडी में असंतुलित ओपन कोष्ठक लिखकर, मैक्रो कॉल को बनाना संभव है जो मैक्रो बॉडी के अंदर शुरू होता है लेकिन इसके बाहर समाप्त होता है। उदाहरण के लिए,

#define strange(file) fprintf (file, "%s %d",
…
strange(stderr) p, 35)
     → fprintf (stderr, "%s %d", p, 35)

एक मैक्रो कॉल को एक साथ टुकड़े करने की क्षमता उपयोगी हो सकती है, लेकिन एक स्थूल शरीर में असंतुलित खुले कोष्ठक का उपयोग सिर्फ भ्रामक है, और इससे बचा जाना चाहिए।