#define _WIN32_WINNT 0x0400; //这句是我写的,以下是系统内的一段代码.
#if(_WIN32_WINNT >= 0x0400) typedef enum _FINDEX_INFO_LEVELS { FindExInfoStandard, FindExInfoMaxInfoLevel } FINDEX_INFO_LEVELS; typedef enum _FINDEX_SEARCH_OPS { FindExSearchNameMatch, FindExSearchLimitToDirectories, FindExSearchLimitToDevices, FindExSearchMaxSearchOp } FINDEX_SEARCH_OPS; #endif
在网上看到说这个标志是判断操作系统的,但这个变量定义在哪里呢,我如果不写预编译,很多函数调用不了,比如FindNextFileExW,但我测了一下,系统里根本就没有定义这个标志,所以这段预编译代码块永远都不会被执行到的。
如何让这个标志的值自动适应操作系统的版本呢?是否针对一个操作系统我得自己定义把它定义成死的呢,难道我写的代码只能支持自定义的操作系统吗?
在include "stdafx.h"
后定义宏就可以了。
这个宏是程序员来定义的,举个例子说吧。
比如说我现在用的Win8+SDK8.那WIN32_WINNT这个值默认是就是0x0602,表示Win8
但是我在开发的一个程序是需要在XP上跑的,不能使用那些Win7或者Win8才引入的特性,那么就需要指定WIN32_WINNT这个宏的值为0x0501,代表WinXP.
只要包含了Windows.h这个头文件以后,就会默认指定一个值给_WIN32_WINNT
如果程序员需要改动这个值,一般是在工程文件里面使用/D 编译选项,指定一个预编译的宏。