2009-09-08 9 views
16

this質問jalfについての回答の1つでは、望ましくない最小/最大マクロの定義を防ぐことができるNOMINMAXを定義します。 windows.h(または他のWindowsヘッダー、たとえばMicrosoft CランタイムヘッダーまたはSTLの実装)の動作を制御するのに役立つ有用な定義はありますか?Windowsヘッダー(有用な定義)を守る方法は?

+4

私はwin32プラットフォーム上でこのminとmaxのナンセンスで30分を無駄にしました。 – Tim

答えて

23

最も一般的に使用されるのはおそらくWIN32_LEAN_AND_MEANです。これは、ほとんど使用されないAPIの部分を無効にします。 MSDNのUsing the Windows Headersで詳細を見つけることができます。

私はので、ここでWINDOWS.Hからのリストだ、MSDNには、それらの定義をリストについて間違って覚えて:WIN32_LEAN_AND_MEANは既にMFCで定義されているので

/* If defined, the following flags inhibit definition 
*  of the indicated items. 
* 
* NOGDICAPMASKS  - CC_*, LC_*, PC_*, CP_*, TC_*, RC_ 
* NOVIRTUALKEYCODES - VK_* 
* NOWINMESSAGES  - WM_*, EM_*, LB_*, CB_* 
* NOWINSTYLES  - WS_*, CS_*, ES_*, LBS_*, SBS_*, CBS_* 
* NOSYSMETRICS  - SM_* 
* NOMENUS   - MF_* 
* NOICONS   - IDI_* 
* NOKEYSTATES  - MK_* 
* NOSYSCOMMANDS  - SC_* 
* NORASTEROPS  - Binary and Tertiary raster ops 
* NOSHOWWINDOW  - SW_* 
* OEMRESOURCE  - OEM Resource values 
* NOATOM   - Atom Manager routines 
* NOCLIPBOARD  - Clipboard routines 
* NOCOLOR   - Screen colors 
* NOCTLMGR   - Control and Dialog routines 
* NODRAWTEXT  - DrawText() and DT_* 
* NOGDI    - All GDI defines and routines 
* NOKERNEL   - All KERNEL defines and routines 
* NOUSER   - All USER defines and routines 
* NONLS    - All NLS defines and routines 
* NOMB    - MB_* and MessageBox() 
* NOMEMMGR   - GMEM_*, LMEM_*, GHND, LHND, associated routines 
* NOMETAFILE  - typedef METAFILEPICT 
* NOMINMAX   - Macros min(a,b) and max(a,b) 
* NOMSG    - typedef MSG and associated routines 
* NOOPENFILE  - OpenFile(), OemToAnsi, AnsiToOem, and OF_* 
* NOSCROLL   - SB_* and scrolling routines 
* NOSERVICE   - All Service Controller routines, SERVICE_ equates, etc. 
* NOSOUND   - Sound driver routines 
* NOTEXTMETRIC  - typedef TEXTMETRIC and associated routines 
* NOWH    - SetWindowsHook and WH_* 
* NOWINOFFSETS  - GWL_*, GCL_*, associated routines 
* NOCOMM   - COMM driver routines 
* NOKANJI   - Kanji support stuff. 
* NOHELP   - Help engine interface. 
* NOPROFILER  - Profiler interface. 
* NODEFERWINDOWPOS - DeferWindowPos routines 
* NOMCX    - Modem Configuration Extensions 
*/ 
+0

リンクは、WIN32_LEAN_AND_MEANのみの記事につながります。間違ったリンク? –

+0

うーん、私はそれがNOxxxを定義していますが定義します。私はそのリストを含めるために私の答えを編集します。 –

+0

この記事では、windows.hでより多くのマクロを検索する方法についても説明しています。 ( "サポートNOapiシンボルの一覧については、Windows.hを参照してください。) 完全なリファレンスドキュメントはありません。 – jalf

3

MFCプロジェクトはVC_EXTRALEANを使用することができます。私もenabling STRICTをお勧めします。