VC 预定义宏
列出预定义的 ANSI C和C++ Microsoft实现宏。
编译器识别预定义的ANSI C宏,并且Microsoft C++实现提供几个更多。这些宏不带参数,并且不能重定义。下面列出的某些预定义的宏定义与多个值。请参见下表。有关更多信息。
宏 |
说明 |
---|---|
__DATE__ |
当前源文件的生成日期。该日期是窗体 Mmm yyyy的dd的字符串。月份名称 Mmm 与在库函数生成相同的日期。TIME.H.声明的 asctime。 |
__FILE__ |
当前源文件的名称。__FILE__ 扩展到双引号括起来的字符串。若要确保文件的完整路径显示,请使用 /FC(所诊断源代码文件的完整路径)。 |
__LINE__ |
在当前源文件中的行号。行号是一个十进制整数常数。它可以更改与 #line 指令。 |
__STDC__ |
指示完全符合与 ANSI C标准。定义为整型常数1,仅当提供 /Za 编译器选择和不生成C++代码;否则为未定义。 |
__TIME__ |
当前源文件的最新生成时。时间是窗体 hh: 为: ss的字符串。 |
__TIMESTAMP__ |
当前源文件的上次修改日期和时间,是以字符串形式 ddd Mmm日期格式: 为: yyyy的ss,ddd 是缩写的星期和 日期 为从1的整数为31。 |
宏 |
说明 |
---|---|
_ATL_VER |
定义ATL版本。 在 Visual Studio 2010中,_ATL_VER 定义为0x1000。 |
_CHAR_UNSIGNED |
默认 char 类型无符号。定义,当 /J 指定。 |
__CLR_VER |
当应用程序生成的,定义使用的公共语言运行时的版本。返回的值具有以下格式: Mmmbbbbb 其中,
// clr_ver.cpp |
__cplusplus_cli |
定义,在使用编译 /clr、/clr:pure或 /clr:safe。__cplusplus_cli的值为200406。__cplusplus_cli实际上就是该翻译单元中。 // cplusplus_cli.cpp |
__COUNTER__ |
用于源文件的源文件或包含的标头时,扩展为从0开始并提高x 1的整数。当您使用预编译标头时,__COUNTER__ 确保其状态。 下面的示例使用 __COUNTER__ 分配唯一标识符到同一类型的三个不同的对象。 首先,假定下面的类定义。构造函数采用整数作为参数。 在主,应用程序声明类型 exampleClass三个对象,使用 __COUNTER__ 作为唯一标识符参数。 // Demonstration of __COUNTER__, assigns unique identifiers to |
__cplusplus |
定义仅适用于C++程序。 |
_CPPRTTI |
定义为代码编译 /GR ("启用运行时类型信息)。 |
_CPPUNWIND |
定义为代码编译 /GX ("启用异常处理)。 |
_DEBUG |
|
_DLL |
定义,当 /MD或/MDd (多线程的DLL)指定。 |
__FUNCDNAME__ |
仅在函数中有效。定义封闭函数的 修饰名 作为字符串。 如果您使用的是,/EP 或 /P 编译器选项,__FUNCDNAME__ 不展开。 下面的示例使用 __FUNCDNAME__、__FUNCSIG__和 __FUNCTION__ 宏显示函数信息。 // Demonstrates functionality of __FUNCTION__, __FUNCDNAME__, and __FUNCSIG__ macros |
__FUNCSIG__ |
仅在函数中有效。定义封闭函数的签名为字符串。 如果您使用的是,/EP 或 /P 编译器选项,__FUNCSIG__ 不展开。 默认情况下在64位操作系统上,调用约定是 __cdecl。 有关示例,请参见 __FUNCDNAME__。 |
__FUNCTION__ |
仅在函数中有效。定义封闭函数的修饰名称作为字符串。 如果您使用的是,/EP 或 /P 编译器选项,__FUNCTION__ 不展开。 有关示例,请参见 __FUNCDNAME__。 |
_INTEGRAL_MAX_BITS |
报告最大大小(以位)一个整型。 // integral_max_bits.cpp |
_M_ALPHA |
定义为DEC APPHA的平台(不再支持)。 |
_M_AMD64 |
定义为x64处理器。 |
_M_CEE |
定义了例如使用 /clr 的生成(/clr:oldSyntax,/clr:safe的所有窗体,)。 |
_M_CEE_PURE |
定义用于 /clr:pure的生成。 |
_M_CEE_SAFE |
定义用于 /clr:safe的生成。 |
_M_IX86 |
定义为x86处理器。请参见下面 _M_IX86的值 表有关更多信息。对于x64处理器定义。 |
_M_IA64 |
定义为 Itanium 处理器家族(ipf) 64位处理器。 |
_M_ARM_FP |
扩展到值指示使用了哪个 /arch 编译器选项:
|
_M_IX86_FP |
扩展到值指示使用了哪个 /arch 编译器选项:
|
_M_MPPC |
定义了Power Macintosh平台(不再支持)。 |
_M_MRX000 |
定义了MIPS平台(不再支持)。 |
_M_PPC |
定义了PowerPC平台(不再支持)。 |
_M_X64 |
定义为x64处理器。 |
_MANAGED |
定义为1 /clr 指定。 |
_MFC_VER |
定义MFC版本。例如,在 Visual Studio 2010中,_MFC_VER 定义为0x0A00。 |
_MSC_BUILD |
计算为编译器的版本号的版本号元素。版本号为句点分隔的版本号的第四个元素。例如,因此,如果Visual C++编译器的版本号为15.00.20706.01,_MSC_BUILD 宏计算结果为1。 |
_MSC_EXTENSIONS |
此宏定义,在使用编译 /Ze 编译器选项时(默认值)。其值,那么,当定义,为1。 |
_MSC_FULL_VER |
计算为编译器的版本号的major、minor和生成号元素。专业数字为句点分隔的版本号的第一个元素,该次版本号是第二个元素,并且,生成号是第三个元素。例如,因此,如果Visual C++编译器的版本号为15.00.20706.01,_MSC_FULL_VER 宏计算结果为150020706。键入 cl /? 在命令行上查看编译器的版本号。 |
_MSC_VER |
计算为编译器的主版本号和次版本号元素。专业数字为句点分隔的版本号的第一个元素,并且该次版本号是第二个元素。 例如,因此,如果Visual C++编译器的版本号为15.00.20706.01,_MSC_VER 宏计算结果为1500。 在 Visual Studio 2010中,_MSC_VER 定义为1600。 |
__MSVC_RUNTIME_CHECKS |
定义,在一个 /RTC 编译器选项指定。 |
_MT |
|
_NATIVE_WCHAR_T_DEFINED |
定义,当使用 /Zc: wchar_t。 |
_OPENMP |
定义,当使用/openmp进行编译时,返回表示OpenMP规范日期的整数实现由Visual C++。 // _OPENMP_dir.cpp |
_VC_NODEFAULTLIB |
定义,当使用 /Zl ;请参见 /Zl(省略默认库名) 有关更多信息。 |
_WCHAR_T_DEFINED |
定义,当使用 /Zc: wchar_t,或者wchar_t在项目中的系统标头文件中定义的。 |
_WIN32 |
定义为Win32和警告的应用程序。始终定义。 |
_WIN64 |
定义为Win64应用程序。 |
_Wp64 |
定义,指定 /Wp64时。 |
如下表所示,编译器生成反映指定的处理器选项的预处理器标识符的值。
选项在开发环境中 |
命令行选项 |
得到的值。 |
---|---|---|
组合 |
/GB |
_M_IX86 = 600 (默认值。将来的编译器会发出一个不同的值反映主导处理器。) |
Pentium |
/G5 |
_M_IX86 = 500 |
Pentium Pro、Pentium II和Pentium III |
/G6 |
_M_IX86 = 600 |
80386 |
/G3 |
_M_IX86 = 300 |
80486 |
/G4 |
_M_IX86 = 400 |
VC 预定义宏的更多相关文章
- C预定义宏
作用:对于__FILE__,__LINE__,__func__这样的宏,在调试程序时是很有用的,因为你可以很容易的知道程序运行到了哪个文件的那一行,是哪个函数. 下面一个例子是打印上面这些预定义的宏的 ...
- 预定义宏,C语言预定义的宏详解
1.预定义宏 对于预定义宏,相信大家并不陌生.为了方便处理一些有用的信息,预处理器定义了一些预处理标识符,也就是预定义宏.预定义宏的名称都是以"__"(两条下划线)开头和结尾的,如 ...
- C/C++预定义宏
编译器识别预定义的 ANSI/ISO C99 C 预处理宏,Microsoft C++ 实现将提供更多宏.这些预处理器宏不带参数,并且不能重新定义. ANSI 兼容的预定义宏 __FILE__,__L ...
- 关于标准C语言的预定义宏
标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义.下面预定义宏表,被我抄了下来.__LINE__ 当前 ...
- OS X以及iOS中与硬件环境相关的预定义宏
由于现在ARM处理器的飞速发展,从Apple A4到现在的Apple A7,从32位到64位,每一代处理器几乎都增加了不少特性,从而在架构上也有所不同.比如Apple A6引入了ARMv7S架构,增加 ...
- 关于window PC机的预定义宏win32
MSDN 里说,VC 有 3 个预处理常量,分别是 _WIN32,_WIN64,WIN32.这三个常量如何使用呢?看起来简单,其实是很困惑的. 在 Win32 配置下,WIN32 在“项目属性-C/C ...
- Windows平台编译器相关的几个预定义宏
WIN32 是在windows.h 中定义的宏,包含winodws.h则定义该宏 _WIN32/_WIN64跟windows平台有关的宏,_WIN32在windows 32位和64位下都有该宏,_ ...
- xcode中的预定义宏
[xcode中的预定义宏] 1.SRCROOT,是定义本target的proj的路径. 2.OBJROOT,对象文件根路径,对象文件(即obj文件)就是中间的临时文件.中间文件输出目录的名字以“pro ...
- STM32F10xxx_Keil中添加的预定义宏
目录 STM32F10xxx_Keil中添加的预定义宏 更新记录 STM32F10xxx_Keil中添加的预定义宏 更新记录 version status description date autho ...
随机推荐
- Nginx 关闭防火墙
关闭防火墙 1) 重启后生效 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后失效 开启: service ...
- Java 之 Web前端(六)
1.AJAX a.定义:异步的 JS 和 XML b.作用:不重新加载页面的情况下,与服务器的数据进行交互,改变网页的部分内容 c.语法: <html> <head> < ...
- Linux发展历史
一.硬件与软件发展历史 计算机由硬件和软件组成结构 硬件 1946年诞生于宾夕法尼亚州,占地170平米,重量达到30吨,名字叫做ENIAC(electronic numerical integrato ...
- windows系统nexus3安装和配置
一.前言 为什么要在本地开发机器上安装nexus?首先声明公司内部是有自己的nexus仓库,但是对上传jar包做了限制,不能畅快的上传自己测试包依赖.于是就自己在本地搭建了一个nexus私服,即可以使 ...
- Jenkins部署码云SpringBoot项目到远程服务器
本文是上一篇文章的后续,上一篇只是利用Jenkins部署项目到本地,并启动,本文是将项目部署到远程服务器并执行. 1.环境准备 1.1 安装插件 上一篇文章已经介绍了需要安装的应用及插件,这一篇还需要 ...
- WPFToolkit DataGrid 使用介绍zz
首先:这版本需要.NetFrameWork SP1的支持 WPF Toolkit - February 2010 Release 下载地址:http://wpf.codeplex.com/rele ...
- 如何解决Failed to retrieve MSVC Environment from XXXXXXXX
升级了新版的Qt5.9.3后,本人的电脑也出了这个问题. 最后通过删除了path中的一些错误.多余的环境变量解决了.(删除了一些mysql的环境变量)
- 2017-9-8-Linux下VNC server开启&图形界面显示
之前有一个写树莓派3B怎么只使用网线VNC远程的blog,里面写的比较粗糙(其实是很长时间没搞我也忘了怎么装的了,照着原来的看一遍应该能想起来),所以重新来在新的环境下搭建一下VNC server. ...
- VirtWire 向客服发ticket
1 首先需要登录自己的账户 2 点击网页的Open Ticket 3 选择要发送何种类型的ticket 4 写自己的问题,包括一个合适的主题,选择你发ticket是针对哪个vps(一个账户下可以ord ...
- linux下 玩转ptrace
译者序:在开发Hust Online Judge的过程中,查阅了不少资料,关于调试器技术的资料在网上是很少,即便是UNIX编程巨著<UNIX环境高级编程>中,相关内容也不多,直到我在 ht ...