Win32_LEAN_AND_MEAN #defining वास्तव में क्या करता है?


165

मैंने पाया कि Win32_LEAN_AND_MEAN को परिभाषित करने वाला स्पष्टीकरण "कम अक्सर उपयोग किए जाने वाले एपीआई में से कुछ को छोड़कर Win32 हेडर फ़ाइलों के आकार को कम करता है"। कहीं और मैंने पढ़ा कि यह निर्माण प्रक्रिया को गति देता है।

तो क्या Win32_LEAN_AND_MEAN वास्तव में बाहर करता है? क्या मुझे इस प्री-प्रोसेसर निर्देश के बारे में परवाह करनी चाहिए? क्या यह निर्माण प्रक्रिया को गति देता है?

मैं भी अतिरिक्त दुबला की तर्ज पर कुछ नामित परियोजनाओं में एक पूर्वप्रक्रमक निर्देश देखा है। क्या यह एक और गूढ़ अनुत्पादक झुकाव है जिसके बारे में मुझे पता होना चाहिए?

जवाबों:


158

Windows.h शीर्ष लेख फ़ाइल से सीधे:

#ifndef WIN32_LEAN_AND_MEAN
    #include <cderr.h>
    #include <dde.h>
    #include <ddeml.h>
    #include <dlgs.h>
    #ifndef _MAC
        #include <lzexpand.h>
        #include <mmsystem.h>
        #include <nb30.h>
        #include <rpc.h>
    #endif
    #include <shellapi.h>
    #ifndef _MAC
        #include <winperf.h>
        #include <winsock.h>
    #endif
    #ifndef NOCRYPT
        #include <wincrypt.h>
        #include <winefs.h>
        #include <winscard.h>
    #endif

    #ifndef NOGDI
        #ifndef _MAC
            #include <winspool.h>
            #ifdef INC_OLE1
                #include <ole.h>
            #else
                #include <ole2.h>
            #endif /* !INC_OLE1 */
        #endif /* !MAC */
        #include <commdlg.h>
    #endif /* !NOGDI */
#endif /* WIN32_LEAN_AND_MEAN */

यदि आप जानना चाहते हैं कि वास्तव में हेडर प्रत्येक में क्या करते हैं, तो MSDN लाइब्रेरी में खोज में हेडर के नाम टाइप करने से आमतौर पर उस हेडर फ़ाइल में फ़ंक्शन की एक सूची तैयार होती है।

इसके अलावा, से माइक्रोसॉफ्ट के सहायता पृष्ठ :

बिल्ड प्रक्रिया को तेज करने के लिए, विज़ुअल सी ++ और विंडोज हेडर्स निम्नलिखित नए परिभाषित प्रदान करते हैं:

VC_EXTRALEAN
WIN32_LEAN_AND_MEAN

आप उन्हें Win32 हेडर फ़ाइलों के आकार को कम करने के लिए उपयोग कर सकते हैं।

अंत में, यदि आप इन प्रीप्रोसेसर डिफाइनर्स में से किसी एक का उपयोग करना चुनते हैं, और आपको जिस चीज़ की आवश्यकता है वह गायब है, तो आप केवल उस विशिष्ट हेडर को ही शामिल कर सकते हैं। MSDN में आपके द्वारा किए जाने वाले फ़ंक्शन का नाम टाइप करने के बाद, आमतौर पर एक प्रविष्टि उत्पन्न होगी जो आपको बताएगी कि कौन सा हेडर शामिल है यदि आप इसका उपयोग करना चाहते हैं, तो पृष्ठ के नीचे।


140

विंडोज देव केंद्र के अनुसार WIN32_LEAN_AND_MEAN API को क्रिप्टोग्राफी, DDE, RPC, शेल और विंडोज सॉकेट्स जैसे API से बाहर करता है।


30
मुझे लगता है कि यह एक सफल जवाब है, जिसकी हममें से अधिकांश लोग तलाश कर रहे थे।
डेव वॉयल्स

3
@ डेव्वॉयल्स-एमएसएफटी और फिर भी यह सतह को खरोंचता भी नहीं है। उदाहरण के लिए यदि आप winsock2.hबेहतर उपयोग करना चाहते हैं तो सुनिश्चित करें WIN32_LEAN_AND_MEAN कि आपको हमेशा परिभाषित किया जाएगा क्योंकि अन्यथा आपको WinSock संस्करणों के बीच परस्पर विरोधी घोषणाएं मिलेंगी। इसलिए मैं दूसरे उत्तर को बेहतर पसंद करता हूं, क्योंकि यह यहां गुम हुए विवरण को जोड़ता है। विशेष रूप से यह दर्शाता है कि उस परिभाषित का वास्तविक प्रभाव क्या है। दोनों ने तोते के दस्तावेज का जवाब दिया और फिर भी एक और अधिक व्यापक है, भले ही दोनों परिभाषित (WinSock नाम संघर्ष आदि) का उपयोग न करने के "नतीजों" का उल्लेख करने में विफल हों।
0xC0000022L
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.