关于编译器和windows的几个主要预定义值
2009-04-03 14:04
337 查看
http://blog.csdn.net/jszj/archive/2009/03/31/4038916.aspx
编译器和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.):
老的预定义(The following table describes the legacy macros in use by the Windows header files.):
编译器和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 required | Macros to define |
---|---|
Windows Server 2008 | NTDDI_VERSION >= NTDDI_LONGHORN |
Windows Vista | NTDDI_VERSION >= NTDDI_VISTA |
Windows Server 2003 SP1 | NTDDI_VERSION >= NTDDI_WS03SP1 |
Windows Server 2003 | NTDDI_VERSION >= NTDDI_WS03 |
Windows XP SP2 | NTDDI_VERSION >= NTDDI_WINXPSP2 |
Windows XP SP1 | NTDDI_VERSION >= NTDDI_WINXPSP1 |
Windows XP | NTDDI_VERSION >= NTDDI_WINXP |
Windows 2000 SP4 | NTDDI_VERSION >= NTDDI_WIN2KSP4 |
Windows 2000 SP3 | NTDDI_VERSION >= NTDDI_WIN2KSP3 |
Windows 2000 SP2 | NTDDI_VERSION >= NTDDI_WIN2KSP2 |
Windows 2000 SP1 | NTDDI_VERSION >= NTDDI_WIN2KSP1 |
Windows 2000 | NTDDI_VERSION >= NTDDI_WIN2K |
Minimum system required | Macros 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 |
相关文章推荐
- 关于编译器和windows的几个主要预定义值
- 关于编译器和windows的几个主要预定义值
- MSDN中几个关于event(windows事件)的链接
- Windows定义的关于字符串的几种类型
- 关于连续定义的几个变量的地址连续问题
- 大于2TB的卷的知识.主要关于windows, EFI,GPT
- 关于软件工程导论的几个图的概念定义
- 【C++】关于编译器错误:error C2572 重定义默认参数 的说明
- 关于写Windows service程序启动和停止需要注意的几个地方
- 关于 windows 程序运行的几个要点
- 关于几个标签的定义
- 关于MySQL数据类型定义的几个细节-INT(N)/VARCHAR(N)/DECIMAL(M,N)
- 关于Windows Media Encoder的几个初级问题:
- 关于在windows上调试ODOO8.0的几个问题
- 关于将LIUNX下的图形化操作倾向WINDOWS的几个东西
- 关于Windows Media Services的几个问题
- Memo: 关于 Windows 10 使用的几个小提示
- 关于奇偶校验的几个定义以及正确认识
- Windows定义的关于字符串的几种类型
- 转载:关于C语言头文件的应用问题,主要还是关于全局变量的定义和声明问题