带有WIN32_LEAN_AND_MEAN </windows.h>的Windows头文件<windows.h>

时间:2013-06-05 12:51:01

标签: windows winapi

#include <Windows.h>
#define WIN32_LEAN_AND_MEAN

为什么上面的代码语句有错误?订单是错还是其他?

2 个答案:

答案 0 :(得分:4)

在Windows.h标头中,如果未定义WIN32_LEAN_AND_MEAN,则预处理器将包含其他标头。因此,如果您不想包含这些标题,则必须在#include之前定义WIN32_LEAN_AND_MEAN,否则它将不会产生任何影响

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

直接来自Windows.h

答案 1 :(得分:3)

订单错了。 WIN32_LEAN_AND_MEAN会影响windows.h声明的内容,因此需要在包含windows.h之前对其进行定义:

#define WIN32_LEAN_AND_MEAN
#include <windows.h>