首页 新闻 会员 周边

c++ 是预编译指令如何定义?

0
悬赏园豆:20 [已解决问题] 解决于 2013-10-15 11:42
#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,但我测了一下,系统里根本就没有定义这个标志,所以这段预编译代码块永远都不会被执行到的。

如何让这个标志的值自动适应操作系统的版本呢?是否针对一个操作系统我得自己定义把它定义成死的呢,难道我写的代码只能支持自定义的操作系统吗?

空明流光的主页 空明流光 | 初学一级 | 园豆:106
提问于:2013-10-14 15:12
< >
分享
最佳答案
0

在include "stdafx.h"

后定义宏就可以了。

空明流光 | 初学一级 |园豆:106 | 2013-10-15 11:42
其他回答(1)
0

这个宏是程序员来定义的,举个例子说吧。

比如说我现在用的Win8+SDK8.那WIN32_WINNT这个值默认是就是0x0602,表示Win8

但是我在开发的一个程序是需要在XP上跑的,不能使用那些Win7或者Win8才引入的特性,那么就需要指定WIN32_WINNT这个宏的值为0x0501,代表WinXP.

只要包含了Windows.h这个头文件以后,就会默认指定一个值给_WIN32_WINNT

如果程序员需要改动这个值,一般是在工程文件里面使用/D 编译选项,指定一个预编译的宏。

 

收获园豆:20
嗷嗷 | 园豆:757 (小虾三级) | 2013-10-15 09:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册