请问,VC环境下,如何在预编译中根据不同操作系统,包含不同的头文件。
比如:如果当前系统为Win98,#include"A.h"
     如果当前系统为WinNT,#include"B.h"
     如果当前系统为Vista,#include"D.h" 多谢指教

解决方案 »

  1.   

    Windows Server 2008 _WIN32_WINNT>=0x0600
    WINVER>=0x0600
     
    Windows Vista _WIN32_WINNT>=0x0600
    WINVER>=0x0600
     
    Windows Server 2003 _WIN32_WINNT>=0x0502
    WINVER>=0x0502
     
    Windows XP _WIN32_WINNT>=0x0501
    WINVER>=0x0501
     
    Windows 2000 _WIN32_WINNT>=0x0500
    WINVER>=0x0500
     
    Windows NT 4.0 _WIN32_WINNT>=0x0400
    WINVER>=0x0400
     
    Windows Me _WIN32_WINDOWS=0x0500
    WINVER>=0x0500
     
    Windows 98 _WIN32_WINDOWS>=0x0410
    WINVER>=0x0410
     
    Windows 95 _WIN32_WINDOWS>=0x0400
    WINVER>=0x0400
     
      

  2.   

    请问 _WIN32_WINNT 的取值是否需要最新版的SDK啊
      

  3.   

    预编译不能判断现在的操作系统,只能你设置一下WIN32_WINNT
      

  4.   

    一般是设法BUILD一个程序使其在尽可能多的系统中可以运行,而不是针对每一种系统BUILD一个程序。
    程序运行中可以判断系统环境对于不同环境做不同的处理,头文件可以用最新的,调用的API尽量用各个系统都有的,如果要使用新系统才提供的API可以用动态取函数地址的方法。
      

  5.   

    但是预编译的时候不能调用API函数进行操作系统判断吧~~~
      

  6.   


    一般在stdafx.h这个文件.
    比如你新建一个mfc exe工程,然后看stdafx.h这个里面的版本值设定.
    在下面写上类似这样的东西,不同系统的时候修改上面定义的_WIN32_WINNT值就包含不同的头文件了.
    #if _WIN32_WINNT == 0x0500
    包含头文件#elif _WIN32_WINNT == 0x0501
    包含头文件#endif 
      

  7.   

    你的意思是,如果我的程序在NT下运行时,我得先手动修改WIN32_WINNT = 0x500,然后进行编译
    如果在Vista下运行,先修改WIN32_WINNT = 0x0600,然后重新编译???