Predefined Macros
来源:互联网 发布:淘宝美匡手表 编辑:程序博客网 时间:2024/05/17 02:29
原文地址:http://msdn.microsoft.com/zh-cn/library/b0084kay(v=vs.100).aspx
Updated: October 2010
Lists the predefined ANSI C and Microsoft C++ implementation macros.
The compiler recognizes predefined ANSI C macros and the Microsoft C++ implementation provides several more. These macros take no arguments and cannot be redefined. Some of the predefined macros listed below are defined with multiple values. See the following tables for more information.
Macro
Description
__DATE__
The compilation date of the current source file. The date is a string literal of the form Mmm dd yyyy. The month name Mmm is the same as for dates generated by the library function asctime declared in TIME.H.
__FILE__
The name of the current source file. __FILE__ expands to a string surrounded by double quotation marks. To ensure that the full path to the file is displayed, use /FC (Full Path of Source Code File in Diagnostics).
__LINE__
The line number in the current source file. The line number is a decimal integer constant. It can be changed with a #line directive.
__STDC__
Indicates full conformance with the ANSI C standard. Defined as the integer constant 1 only if the/Za compiler option is given and you are not compiling C++ code; otherwise is undefined.
__TIME__
The most recent compilation time of the current source file. The time is a string literal of the formhh:mm:ss.
__TIMESTAMP__
The date and time of the last modification of the current source file, expressed as a string literal in the form Ddd Mmm Date hh:mm:ss yyyy, where Ddd is the abbreviated day of the week and Date is an integer from 1 to 31.
Macro
Description
_ATL_VER
Defines the ATL version.
In Visual Studio 2010, _ATL_VER is defined as 0x1000.
_CHAR_UNSIGNED
Default char type is unsigned. Defined when /J is specified.
__CLR_VER
Defines the version of the common language runtime used when the application was compiled. The value returned will be in the following format:
Mmmbbbbb
where,
M is the major version of the runtime
mm is the minor version of the runtime
bbbbb is the build number.
// clr_ver.cpp// compile with: /clrusing namespace System;int main() { Console::WriteLine(__CLR_VER);}
__cplusplus_cli
Defined when you compile with /clr, /clr:pure, or /clr:safe. Value of __cplusplus_cli is 200406. __cplusplus_cli is in effect throughout the translation unit.
// cplusplus_cli.cpp// compile with: /clr#include "stdio.h"int main() { #ifdef __cplusplus_cli printf("%d\n", __cplusplus_cli); #else printf("not defined\n"); #endif}
__COUNTER__
Expands to an integer starting with 0 and incrementing by 1 every time it is used in a source file or included headers of the source file. __COUNTER__ remembers its state when you use precompiled headers.
The following example uses __COUNTER__ to assign unique identifiers to three different objects of the same type.
First, assume the following class definition. The constructor takes an integer as a parameter.
// initialize object with a read-only unique IDexampleClass::exampleClass(int nID){m_nID = nID;}int exampleClass::GetID(){return m_nID;}
In main, the application declares three objects of type exampleClass, using __COUNTER__ as the unique identifier parameter.
// Demonstration of __COUNTER__, assigns unique identifiers to// different objects of the same typeint main(int argc, char** argv){// __COUNTER__ is initially defined as 0exampleClass e1(__COUNTER__);// having been referenced, __COUNTER__ is now defined as 1exampleClass e2(__COUNTER__);// __COUNTER__ is now defined as 2exampleClass e3(__COUNTER__);printf("e1 ID: %i\n", e1.GetID());printf("e2 ID: %i\n", e2.GetID());printf("e3 ID: %i\n", e3.GetID());// Output// ------------------------------// e1 ID: 0// e2 ID: 1// e3 ID: 2return 0;}
__cplusplus
Defined for C++ programs only.
_CPPRTTI
Defined for code compiled with /GR (Enable Run-Time Type Information).
_CPPUNWIND
Defined for code compiled with /GX (Enable Exception Handling).
_DEBUG
Defined when you compile with /LDd, /MDd, and /MTd.
_DLL
Defined when /MD or /MDd (Multithreaded DLL) is specified.
__FUNCDNAME__
Valid only in a function. Defines the decorated name of the enclosing function as a string.
__FUNCDNAME__ is not expanded if you use the /EP or /P compiler option.
The following example uses the __FUNCDNAME__, __FUNCSIG__, and __FUNCTION__ macros to display function information.
// Demonstrates functionality of __FUNCTION__, __FUNCDNAME__, and __FUNCSIG__ macrosvoid exampleFunction(){printf("Function name: %s\n", __FUNCTION__);printf("Decorated function name: %s\n", __FUNCDNAME__);printf("Function signature: %s\n", __FUNCSIG__);// Sample Output// -------------------------------------------------// Function name: exampleFunction// Decorated function name: ?exampleFunction@@YAXXZ// Function signature: void __cdecl exampleFunction(void)}
__FUNCSIG__
Valid only in a function. Defines the signature of the enclosing function as a string.
__FUNCSIG__ is not expanded if you use the /EP or /P compiler option.
On a 64-bit operating system, the calling convention is __cdecl by default.
See __FUNCDNAME__ for an example.
__FUNCTION__
Valid only in a function. Defines the undecorated name of the enclosing function as a string.
__FUNCTION__ is not expanded if you use the /EP or /P compiler option.
See __FUNCDNAME__ for an example.
_INTEGRAL_MAX_BITS
Reports the maximum size (in bits) for an integral type.
// integral_max_bits.cpp#include <stdio.h>int main() { printf("%d\n", _INTEGRAL_MAX_BITS);}
_M_ALPHA
Defined for DEC ALPHA platforms (no longer supported).
_M_AMD64
Defined for x64 processors.
_M_CEE
Defined for a compilation that uses any form of /clr (/clr:oldSyntax, /clr:safe, for example).
_M_CEE_PURE
Defined for a compilation that uses /clr:pure.
_M_CEE_SAFE
Defined for a compilation that uses /clr:safe.
_M_IX86
Defined for x86 processors. See the Values for _M_IX86 table below for more information. This is not defined for x64 processors.
_M_IA64
Defined for Itanium Processor Family 64-bit processors.
_M_IX86_FP
Expands to a value indicating which /arch compiler option was used:
0 if /arch was not used.
1 if /arch:SSE was used.
2 if /arch:SSE2 was used.
See /arch (Minimum CPU Architecture) for more information.
_M_MPPC
Defined for Power Macintosh platforms (no longer supported).
_M_MRX000
Defined for MIPS platforms (no longer supported).
_M_PPC
Defined for PowerPC platforms (no longer supported).
_M_X64
Defined for x64 processors.
_MANAGED
Defined to be 1 when /clr is specified.
_MFC_VER
Defines the MFC version. For example, in Visual Studio 2010, _MFC_VER is defined as 0x0A00.
_MSC_BUILD
Evaluates to the revision number component of the compiler's version number. The revision number is the fourth component of the period-delimited version number. For example, if the version number of the Visual C++ compiler is 15.00.20706.01, the _MSC_BUILD macro evaluates to 1.
_MSC_EXTENSIONS
This macro is defined when you compile with the /Ze compiler option (the default). Its value, when defined, is 1.
_MSC_FULL_VER
Evaluates to the major, minor, and build number components of the compiler's version number. The major number is the first component of the period-delimited version number, the minor number is the second component, and the build number is the third component. For example, if the version number of the Visual C++ compiler is 15.00.20706.01, the_MSC_FULL_VER macro evaluates to 150020706. Type cl /? at the command line to view the compiler's version number.
_MSC_VER
Evaluates to the major and minor number components of the compiler's version number. The major number is the first component of the period-delimited version number and the minor number is the second component.
For example, if the version number of the Visual C++ compiler is 15.00.20706.01, the _MSC_VER macro evaluates to 1500.
In Visual Studio 2010, _MSC_VER is defined as 1600.
__MSVC_RUNTIME_CHECKS
Defined when one of the /RTC compiler options is specified.
_MT
Defined when /MD or /MDd (Multithreaded DLL) or /MT or /MTd (Multithreaded) is specified.
_NATIVE_WCHAR_T_DEFINED
Defined when /Zc:wchar_t is used.
_OPENMP
Defined when compiling with /openmp, returns an integer representing the date of the OpenMP specification implemented by Visual C++.
// _OPENMP_dir.cpp// compile with: /openmp #include <stdio.h> int main() { printf("%d\n", _OPENMP);}
_VC_NODEFAULTLIB
Defined when /Zl is used; see /Zl (Omit Default Library Name) for more information.
_WCHAR_T_DEFINED
Defined when /Zc:wchar_t is used or if wchar_t is defined in a system header file included in your project.
_WIN32
Defined for applications for Win32 and Win64. Always defined.
_WIN64
Defined for applications for Win64.
_Wp64
Defined when specifying /Wp64.
As shown in following table, the compiler generates a value for the preprocessor identifiers that reflect the processor option specified.
Option in Development Environment
Command-Line Option
Resulting Value
Blend
/GB
_M_IX86 = 600 (Default. Future compilers will emit a different value to reflect the dominant processor.)
Pentium
/G5
_M_IX86 = 500
Pentium Pro, Pentium II, and Pentium III
/G6
_M_IX86 = 600
80386
/G3
_M_IX86 = 300
80486
/G4
_M_IX86 = 400
Reference
Date
History
Reason
October 2010
Updated the description of the _MFC_VER macro.
Customer feedback.
December 2010
Added the _M_AMD64 macro.
Customer feedback.
- Predefined Macros
- Predefined Macros
- C's Predefined Macros
- Standard Predefined Macros
- ANSI-Compliant Predefined Macros
- Standard Predefined Macros
- Predefined shader preprocessor macros
- VC++ Predefined Macros
- VS2010 Predefined Macros
- Common Predefined Macros
- Common Predefined Macros
- C/C++ Standard Predefined Macros
- Visual Studio 2012 Predefined Macros
- Predefined Macros 预定义宏
- Using Microsoft-Specific Predefined Preprocessor Macros
- Using ANSI-Compliant Predefined Preprocessor Macros
- C++预定义宏 C++ Predefined Macros
- Predefined Macros - __FUNCTION__ - in which include files
- sql面试题
- linux下多线程服务器处理程序问题解决
- HotSpot JVM垃圾收集原理
- Oracle常用语句大全
- 日期格式转换
- Predefined Macros
- 如何在SUSE安装firefox和thunderbird两个版本
- Web开源框架大汇总
- 传智博客杨中科
- input type='button'里面的文字换行
- socket端口数量限制问题
- 分页
- inno setup 安装前判断进程是否存在,以及停止相应进程
- 汗,现在才发现文件下载是这样的!