मान लीजिए मैं निम्नलिखित मैक्रो है:कैसे अपने पिछले परिभाषा का उपयोग किसी मैक्रो फिर से परिभाषित करने
#define xxx(x) printf("%s\n",x);
मैं इसके नाम को परिवर्तित किए बिना इस मैक्रो का एक "बढ़ाया" संस्करण का उपयोग करना चाहते हैं कुछ फ़ाइलों में
अब। नया संस्करण मूल संस्करण की कार्यक्षमता की पड़ताल करता है और कुछ और काम करता है।
#define xxx(x) do { xxx(x); yyy(x); } while(0)
बेशक यह मेरे redefition चेतावनी देता है, लेकिन कारण है कि मैं पाने के 'xxx' इस दायरे में घोषित नहीं किया गया था? मुझे इसे ठीक से कैसे परिभाषित करना चाहिए?
संपादित करें: इस http://gcc.gnu.org/onlinedocs/gcc-3.3.6/cpp/Self_002dReferential-Macros.html के अनुसार यह संभव
कि मैक्रो प्रतिस्थापन के अनंत रिकर्सन को रोकना। इसका मतलब यह नहीं है कि आप एक से अधिक चीज़ों के लिए एक मैक्रो परिभाषित कर सकते हैं। –