Waitforexit उदाहरण सी मैक्रोज़


या, नेस्टेड मैक्रो मुद्दों के खिलाफ सुरक्षित गार्ड पर: और यह संकलित किया गया है: मैक्रो पैरामीटर को एक टोकन (टोकन वैरिएबल नाम आदि) में संयोजित करने के लिए और एक मैक्रो पैरामीटर को स्ट्रिप करने के लिए (सीसी में परावर्तन करते समय बहुत उपयोगी) आपके मैक्रोज़ के लिए उपसर्ग, क्योंकि वे एक ही नाम स्थान में हैं और आप किसी अन्य कोड के साथ टकराव नहीं चाहते हैं। (मैंने आपके यूजर नेम के आधार पर एमएलवी चुना है) आवरण मैक्रोज़ यदि आपके पास घोंसले मैक्रोज़ में मदद करता है, यानी एमएलवीजीईटी अन्य मर्जेड स्ट्रिंग के साथ अन्य मैक्रो से कॉल करता है (नीचे दी गई टिप्पणी के अनुसार, धन्यवाद)। उत्तर दिया 30 अप्रैल 09 को 12: 02 मैं असहमत, चिड़चिड़ापन लैम्ब्डा से पहले, फोरहैक एक गंदा चीज थी, क्योंकि प्रत्येक तत्व के माध्यम से कोड रननिनिग कॉलिंग बिंदु पर स्थानीय नहीं था। प्रत्येक के लिए। (और मैं अत्यधिक हाथ-लुढ़का समाधान के बजाय बूस्टफ़ोअरएच की सिफारिश करता हूं) आपको कोड को पुनरावृत्ति साइट के पास रखना चाहिए, जिससे इसे और अधिक पठनीय बनाया जा सके उस ने कहा, एक बार लैम्ब्डा रोल आउट हो जाने के बाद, foreach फिर से जाने का रास्ता हो सकता है। ndash GManNickG Aug 18 09 23:50 हैडर फ़ाइल गार्ड मैक्रोज़ की आवश्यकता है। क्या कोई ऐसा अन्य क्षेत्र हैं जो मैक्रोज़ की आवश्यकता नहीं हैं (यदि कोई हो) क्या कोई अन्य स्थितियां हैं जो मैक्रोज़ हाँ से लाभान्वित हों I एक जगह मैं मैक्रो का इस्तेमाल करता हूं बहुत दोहराव वाला कोड है उदाहरण के लिए, सी इंटरफेस (, कॉम, पायथन, आदि) के साथ सी कोड को इस्तेमाल करने के लिए, मुझे अपवादों के विभिन्न प्रकारों को पकड़ना होगा। यहाँ है कि मैं यह कैसे करता हूं: मुझे इन कैचों को हर आवरण समारोह में डालना होगा। हर बार पूर्ण कैच ब्लॉकों को टाइप करने के बजाय, मैं बस प्रकार: यह भी रखरखाव आसान बना देता है अगर मुझे कभी भी एक नया अपवाद प्रकार जोड़ना है, तो केवल एक ही जगह मुझे जोड़ना होगा अन्य उपयोगी उदाहरण भी हैं: जिनमें से कई में फ़ाइल और लाइन प्रीप्रोसेसर मैक्रोज़ शामिल हैं। वैसे भी, मैक्रोज़ बहुत उपयोगी होते हैं जब सही तरीके से उपयोग किया जाता है मैक्रोज़ बुरा नहीं है - उनका दुरुपयोग बुरा है। आइये, हेडर रक्षक जैसी स्पष्ट चीजों को अच्छी तरह से अनदेखा करें कभी-कभी, आप कोड जनरेट करना चाहते हैं जिसे प्रीकंपलर द्वारा कॉपीपीस्ट किया जाना चाहिए: जो आपको इसे कोड करने में सक्षम बनाता है: और जैसे संदेश उत्पन्न कर सकते हैं: नोट करें कि मैक्रोज़ के साथ टेम्पलेट्स मिश्रण से भी बेहतर परिणाम हो सकते हैं (यानी स्वचालित रूप से मूल्यों को सशक्त करके अपने वेरिएबल नामों के साथ-साथ) दूसरी बार, आपको कुछ कोड की लाइन और फाइल की आवश्यकता है, उदाहरण के लिए डीबग जानकारी उत्पन्न करने के लिए। निम्नलिखित दृश्य सी के लिए एक क्लासिक है: निम्न कोड के साथ: यह जैसे संदेश उत्पन्न करता है: अन्य बार, आपको एक सम्पत्ति के लिए गेटर्स और सेटर्स बनाने की तरह कंसैक्शन ऑपरेटर का इस्तेमाल करके कोड उत्पन्न करना होगा (यह काफी सीमित मामलों के लिए है , के माध्यम से)। दूसरी बार, यदि आप फ़ंक्शन के जरिए उपयोग किए जाते हैं, तो कोड को संकलित करते हुए कोड जनरेट करेंगे, जैसे: किसके रूप में इस्तेमाल किया जा सकता है (फिर भी, मैंने इस प्रकार का कोड ठीक ही एक बार उपयोग किया था) अंतिम, लेकिन कम से कम, प्रसिद्ध बढ़ावा :: फोरेच (ध्यान दें: बढ़ावा देने वाले होमपेज से कोड को कॉपी किया गया है) कौन सा (आईएमएचओ) std :: foreach से बेहतर है इसलिए, मैक्रोज़ हमेशा उपयोगी होते हैं क्योंकि वे सामान्य संकलक नियमों के बाहर हैं। लेकिन मुझे लगता है कि ज्यादातर समय मैं एक बार देखता हूं, वे प्रभावी रूप से सी कोड के अवशेष रूप से कभी भी उचित सी में अनुवादित नहीं होते हैं। सी 11 के साथ भी, आपके मैक्रो का एक बहुत कुछ ऐसा करने के लिए छोड़ा जा सकता है: ltsstreamgt में शामिल हैं ltiostreamgt नामस्थान का उपयोग कर स्टैड शून्य ट्रेस (चोर कॉन्स्ट फ़ाइल, इंट लाइन, ओस्ट्रीम एम्पॉओ) स्ट्रेट ओएससी ट्रेसे (ऑस्ट्रीमस्ट्राफ) ट्रेस (फाइल, लाइन, ओएसएस)। लावल () एलटीएलटस्ट्रीमस्टाफ़) इंट मुख्य () को परिभाषित करता है, इस तरह से, मैक्रो रास्ता कम है। ndash रेनर ब्लॉम 2 9 अप्रैल, 13:28 मेरी आखिरी नौकरी में, मैं वायरस स्कैनर पर काम कर रहा था। मेरे लिए डीबग करने के लिए चीज को आसान बनाने के लिए, मेरे पास बहुत सारी जगहों पर प्रवेश करना पड़ा, लेकिन एक उच्च मांग वाले ऐप में, फ़ंक्शन कॉल की कीमत सिर्फ बहुत महंगा है तो, मैं इस छोटे मैक्रो के साथ आया था, जो अब भी मुझे किसी ग्राहक साइट पर रिलीज़ संस्करण पर डीबग लॉगिंग को सक्षम करने की अनुमति देता है, फ़ंक्शन कॉल की लागत के बिना डिबग फ्लैग की जांच करेगा और कुछ भी लॉगिंग किए बिना वापस लौटाएगा या यदि सक्षम हो , लॉगिंग करना होगा। मैक्रो को इस प्रकार परिभाषित किया गया था: प्रवेश कार्य में वीएआरएजीएस के कारण, यह इस तरह के मैक्रो के लिए एक अच्छा मामला था। इससे पहले, मैंने एक उच्च सुरक्षा वाले अनुप्रयोग में एक मैक्रो का उपयोग किया था, जिसे उपयोगकर्ता को यह बताने के लिए आवश्यक था कि उनके पास सही पहुंच नहीं है, और यह उन्हें बताएगा कि उन्हें क्या ध्वज चाहिए मैक्रो (यों) के रूप में परिभाषित किया गया: फिर, हम UI पर सभी चेक को छिड़क कर सकते हैं, और यह आपको बताएगा कि आपके द्वारा करने की कोशिश करने के लिए कौन सी भूमिकाएं करने की अनुमति दी गई थी, यदि आपने पहले से ही भूमिका नहीं रखी है उनमें से दो का कारण कुछ स्थानों पर एक मूल्य वापस करना था, और दूसरों में शून्य समारोह से वापस लौटाना था। वैसे भी, Ive कैसे इस्तेमाल किया Ive, और मुझे यकीन है कि कैसे यह टेम्पलेट्स के साथ मदद की हो सकती है। इसके अलावा, मैं उनसे बचने की कोशिश करता हूं, जब तक कि वास्तव में जरूरी नहीं। अभी तक एक और foreach मैक्रोज़। टी: प्रकार, सी: कंटेनर, i: इटरेटर उपयोग (अवधारणा को दिखा रहा है, वास्तविक नहीं): बेहतर कार्यान्वयन उपलब्ध है: Google BOOSTFOREACH शायद मैक्रो का बड़ा उपयोग मंच-स्वतंत्र विकास में है। प्रकार विसंगतियों के मामलों के बारे में सोचें - मैक्रोज़ के साथ, आप अलग-अलग हेडर फाइलों का उपयोग कर सकते हैं - जैसे: - WINTYPES. H अन्य तरीकों से इसे लागू करने से बहुत अधिक पठनीय है, मेरी राय में मैं अपवादों को आसानी से परिभाषित करने के लिए मैक्रोज़ का उपयोग करता हूं: जहां DEFEXCEPTION लगता है VAARGS केवल अप्रत्यक्ष रूप से अब तक उल्लेख किया गया है: सामान्य C03 कोड लिखते समय, और आपको (सामान्य) मापदंडों की एक चर संख्या की आवश्यकता होती है, तो आप किसी टेम्पलेट के बजाय मैक्रो का उपयोग कर सकते हैं। नोट: सामान्य तौर पर, नाम चेकथ को काल्पनिक getopfromname फ़ंक्शन में शामिल किया जा सकता है। यह सिर्फ एक उदाहरण है। VAARGS कॉल के आसपास के अन्य सामान्य कोड हो सकते हैं। एक बार जब हम सीए 11 के साथ वैराडीक टेम्पलेट प्राप्त करते हैं, तो हम इसे एक टेम्पलेट के साथ ठीक से हल कर सकते हैं। मुझे लगता है कि यह चाल पूर्वप्रक्रमक का एक चतुर उपयोग है जो किसी फ़ंक्शन के साथ अनुकरण नहीं किया जा सकता है: फिर आप इसका उपयोग इस तरह कर सकते हैं: आप एक रीलीसी मैक्रो को भी परिभाषित कर सकते हैं यह चाल मानक के अनुसार काम नहीं करता है। यह प्रीप्रोसेसर के माध्यम से एक टिप्पणी मार्कर बनाने का प्रयास करता है, लेकिन पूर्वप्रक्रमक चलाने से पहले टिप्पणी को हटाया जाना है। एक अनुरूप कम्पाइलर यहाँ एक वाक्यविन्यास त्रुटि का कारण होगा। ndash डेविड थॉर्नली Oct 23 08 at 19:20 क्षमा करें डेविड, लेकिन संकलक को टिप्पणी हटाने की एक दूसरी कॉपी होना चाहिए। ndash यहोशू 13 अगस्त 09 20:16 बहुत आसान है एक वैश्विक const bool debugging झंडा बनाने, और इस तरह कोड का उपयोग करें: if (debug) cout ltlt quot quot - मैक्रोज़ के लिए कोई ज़रूरत नहीं है स्टीफन मोनोव जनवरी 17 10 पर 16:51

Comments