#Defining WIN32_LEAN_AND_MEAN tam olarak neyi hariç tutar?


165

WIN32_LEAN_AND_MEAN "daha az sık kullanılan API'lerin bazıları hariç tutarak Win32 başlık dosyalarının boyutunu azaltır" tanımlayan açıklama bulundu. Başka bir yerde inşa sürecini hızlandırdığını okudum.

Peki WIN32_LEAN_AND_MEAN tam olarak neyi hariç tutar? Bu ön işlemci yönergesine dikkat etmeli miyim? İnşa sürecini hızlandırır mı?

Ayrıca ekstra yalın çizgiler boyunca bir şey adı verilen projelerde bir önişlemci yönergesi gördüm. Bu bilmem gereken başka bir ezoterik önişlemci büyüsü mü?

Yanıtlar:


158

Doğrudan Windows.h başlık dosyasından:

#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 */

başlıkların her birinin gerçekte ne yaptığını bilmek istiyorsanız, MSDN kitaplığındaki aramaya başlık adlarının yazılması genellikle bu başlık dosyasındaki işlevlerin bir listesini oluşturur.

Ayrıca, Microsoft'un destek sayfasından :

Derleme işlemini hızlandırmak için Visual C ++ ve Windows Üstbilgileri aşağıdaki yeni tanımları sağlar:

VC_EXTRALEAN
WIN32_LEAN_AND_MEAN

Win32 başlık dosyalarının boyutunu azaltmak için bunları kullanabilirsiniz.

Son olarak, bu önişlemci tanımlarından birini kullanmayı seçerseniz ve ihtiyacınız olan bir şey eksikse, söz konusu başlık dosyasını kendiniz ekleyebilirsiniz. Arkanızda olduğunuz işlevin adını MSDN'ye yazmak genellikle, kullanmak istediğinizde sayfanın alt kısmına hangi başlığı dahil edeceğinizi bildiren bir giriş oluşturur.


140

Göre , Windows Dev Center böyle Kriptografi, DDE, RPC, Shell ve Windows Sockets olarak WIN32_LEAN_AND_MEAN hariç tutar API'ler.


30
Bence bu çoğumuzun aradığı kısa ve özlü cevap.
Dave Voyles

3
@ DaveVoyles-MSFT ve henüz yüzeyi çizmez. Örneğin, winsock2.hsizi daha iyi kullanmak istiyorsanız WIN32_LEAN_AND_MEAN her zaman tanımlandığından emin olun , aksi takdirde WinSock sürümleri arasında çelişkili bildirimler alırsınız. Diğer yanıtı daha çok seviyorum çünkü burada eksik detaylar ekliyor. Özellikle bu tanımlamanın gerçek etkisinin ne olduğunu gösterir. Her ikisi de papağan dokümantasyonuna cevap verir ve diğeri daha kapsamlı olsa da, her ikisi de tanımlamayı (WinSock ismi çakışmaları vb.)
0xC0000022L
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.