关于编译器和windows的几个主要预定义值

编译器和windows操作系统的几个主要预定义值对程序的编译会有影响,以下为基本的列表

 

(关于详细的c++编译预定义,请在msdn中搜索“Predefined Macros”以获取更准备更全面的描述)

 

一、c++预定义

__cplusplus

一般是在c库的头文件中使用,方法如下:

#ifdef __cplusplus

extern "C" {

#endif

 

... // C库的函数和数据类型声明

 

#ifdef __cplusplus

}

#endif

 

二、c++编译器的版本定义

这里的C++是指vs(visual studio、vc++)的编译器cl的版本定义,表面也可以说是VS IDE的版本预定义.(有助于搜索,vs2005,vs2008)

版本预定义:_MSC_VER

 

Compiler                           _MSC_VER value
   --------                           --------------
   C Compiler version 6.0                  600
   C/C++ compiler version 7.0              700
   Visual C++, Windows, version 1.0        800
   Visual C++, 32-bit, version 1.0         800
   Visual C++, Windows, version 2.0        900
   Visual C++, 32-bit, version 2.x         900
   Visual C++, 32-bit, version 4.0         1000
   Visual C++, 32-bit, version 5.0         1100
   Visual C++, 32-bit, version 6.0         1200
   Visual C++, version 2003 .Net          1310

   Visual C++, version 2005                 1400

   Visual C++, version 2008                 1500

 

三、文件的编译选项

3.1 编译日期预定义:__DATE__

表明当前文件的编译日期,结果为字符串,格式为: Mmm dd yyyy,其中的月份名称 Mmm 为time.h中asctime()函数产生的日期中的月份名称

编译时间:__TIME__

结果是字符串,格式为:hh:mm:ss

最后的修改时间定义:__TIMESTAMP__

格式为:Ddd Mmm Date hh:mm:ss yyyy,其中日为1 ~ 31

3.2 文件名预定义:__FILE__

可以在文件的输出位置打印本文件名,这个在写异常调试日志时比较有用

文件行号预定义:__LINE__

当前代码所处的行号,它是一个整数

 

四、windows版本问题

(注:本节的翻译是我对这些英文的理解基础上进行的翻译,可能不准确)

对这些版本有两种方法定义,一种是老的预定义,一种是新的预定义。

新的预定义(The following table describes the preferred macros in use by the Windows header files.):

Minimum system requiredMacros to define
Windows Server 2008NTDDI_VERSION >= NTDDI_LONGHORN
Windows VistaNTDDI_VERSION >= NTDDI_VISTA
Windows Server 2003 SP1NTDDI_VERSION >= NTDDI_WS03SP1
Windows Server 2003NTDDI_VERSION >= NTDDI_WS03
Windows XP SP2NTDDI_VERSION >= NTDDI_WINXPSP2
Windows XP SP1NTDDI_VERSION >= NTDDI_WINXPSP1
Windows XPNTDDI_VERSION >= NTDDI_WINXP
Windows 2000 SP4NTDDI_VERSION >= NTDDI_WIN2KSP4
Windows 2000 SP3NTDDI_VERSION >= NTDDI_WIN2KSP3
Windows 2000 SP2NTDDI_VERSION >= NTDDI_WIN2KSP2
Windows 2000 SP1NTDDI_VERSION >= NTDDI_WIN2KSP1
Windows 2000NTDDI_VERSION >= NTDDI_WIN2K

老的预定义(The following table describes the legacy macros in use by the Windows header files.):

Minimum system requiredMacros to define
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
Internet Explorer 7.0_WIN32_IE>=0x0700
Internet Explorer 6.0 SP2_WIN32_IE>=0x0603
Internet Explorer 6.0 SP1_WIN32_IE>=0x0601
Internet Explorer 6.0_WIN32_IE>=0x0600
Internet Explorer 5.5_WIN32_IE>=0x0550
Internet Explorer 5.01_WIN32_IE>=0x0501
Internet Explorer 5.0, 5.0a, 5.0b_WIN32_IE>=0x0500
Internet Explorer 4.01_WIN32_IE>=0x0401
Internet Explorer 4.0_WIN32_IE>=0x0400
Internet Explorer 3.0, 3.01, 3.02_WIN32_IE>=0x0300

 

(此文以后可能会不断更新)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值