"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मैं C++ मैक्रोज़ में वैकल्पिक पैरामीटर्स का अनुकरण कैसे कर सकता हूँ?

मैं C++ मैक्रोज़ में वैकल्पिक पैरामीटर्स का अनुकरण कैसे कर सकता हूँ?

2024-11-15 को प्रकाशित
ब्राउज़ करें:921

How Can I Simulate Optional Parameters in C   Macros?

सी में परिवर्तनीय पैरामीटर वाले मैक्रोज़

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

एक दृष्टिकोण में पुनरावर्ती मैक्रो पैटर्न का उपयोग करना शामिल है। चलिए एक उदाहरण लेते हैं:

#define PRINT_STRING(message, ...) PRINT_STRING_MACRO_CHOOSER(__VA_ARGS__)(__VA_ARGS__)

#define PRINT_STRING_1_ARGS(message) PrintString(message, 0, 0)
#define PRINT_STRING_2_ARGS(message, size) PrintString(message, size, 0)
#define PRINT_STRING_3_ARGS(message, size, style) PrintString(message, size, style)

PRINT_STRING मैक्रो तर्कों की एक परिवर्तनीय संख्या लेता है। मैक्रो PRINT_STRING_MACRO_CHOOSER दो बार तर्कों की सूची का उपयोग करता है: एक बार तर्कों की संख्या के आधार पर सही सहायक मैक्रो (PRINT_STRING_1_ARGS, PRINT_STRING_2_ARGS, या PRINT_STRING_3_ARGS) निर्धारित करने के लिए, और फिर चयनित सहायक मैक्रो को तर्क पास करने के लिए।

इसका उपयोग कैसे करें:

PRINT_STRING("Hello, World!");  // Defaults to no size or style
PRINT_STRING("Hello, World!", 18); // Specifies only size
PRINT_STRING("Hello, World!", 18, bold); // Specifies both size and style

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

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3