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

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

2024-12-21 को प्रकाशित
ब्राउज़ करें:129

How can you implement optional parameters in C   macros for code customization?

सी मैक्रोज़ के साथ पैरामीटर्स को अनुकूलित करना

मैक्रोज़ सी प्रोग्रामिंग का एक मूलभूत पहलू है, जो कोड अनुकूलन और लचीलेपन की अनुमति देता है। एक सामान्य आवश्यकता मैक्रोज़ के भीतर वैकल्पिक मापदंडों को परिभाषित करने की क्षमता है।

#define PRINT_STRING(संदेश) PrintString(संदेश, 0, 0)

यह मैक्रो एक अनिवार्य पैरामीटर, संदेश को प्रिंट करने के लिए स्वीकार करता है। इसे और अधिक बहुमुखी बनाने के लिए, हम स्ट्रिंग आकार और फ़ॉन्ट शैली के लिए वैकल्पिक पैरामीटर पेश कर सकते हैं:

#define PRINT_STRING_1_ARGS(message) PrintString(message, 0, 0) #PRINT_STRING_2_ARGS(संदेश, आकार) को परिभाषित करें PrintString(संदेश, आकार, 0) #PRINT_STRING_3_ARGS(संदेश, आकार, शैली) को परिभाषित करें PrintString(संदेश, आकार, शैली)

#define PRINT_STRING(message) PrintString(message, 0, 0)

ओवरलोडिंग प्राप्त करने के लिए, हम गिनने के लिए एक ट्रिक का उपयोग करते हैं मैक्रो को दिए गए तर्कों की संख्या. फिर, हम इस तर्क संख्या के आधार पर उपयुक्त सहायक मैक्रो का चयन करते हैं:
#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)
#define GET_4TH_ARG(arg1, arg2, arg3, arg4, ...) arg4 #PRINT_STRING_MACRO_CHOOSER(...) को परिभाषित करें \ GET_4TH_ARG(__VA_ARGS__, PRINT_STRING_3_ARGS, \ PRINT_STRING_2_ARGS, PRINT_STRING_1_ARGS, )

उपयोग

अब हम वैकल्पिक मापदंडों के साथ अतिभारित PRINT_STRING मैक्रो का उपयोग कर सकते हैं:
#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)
#define PRINT_STRING(...) PRINT_STRING_MACRO_CHOOSER(__VA_ARGS__)(__VA_ARGS__)

उदाहरण के लिए, हम डिफ़ॉल्ट स्ट्रिंग को प्रिंट करने के लिए बिना किसी तर्क के मैक्रो को कॉल कर सकते हैं:

PRINT_STRING('हैलो, वर्ल्ड!');

या स्ट्रिंग निर्दिष्ट करें आकार:
#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("हैलो, वर्ल्ड!", 18);

या स्ट्रिंग आकार और फ़ॉन्ट शैली दोनों:
#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("हैलो, वर्ल्ड!", 18, बोल्ड);

यह दृष्टिकोण मैक्रो कॉलर के लिए पैरामीटर हैंडलिंग को सरल बनाता है, कोड पुन: प्रयोज्यता को बढ़ाता है और बहुमुखी प्रतिभा.
            
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3