Macro | Description |
|---|
_ATL_VER | Defines the ATL version. In Visual Studio 2008, _ATL_VER is defined as 0x0900. |
_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: /clr
using 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 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 ID
exampleClass::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 type
int main(int argc, char** argv)
{
// __COUNTER__ is initially defined as 0
exampleClass e1(__COUNTER__);
// having been referenced, __COUNTER__ is now defined as 1
exampleClass e2(__COUNTER__);
// __COUNTER__ is now defined as 2
exampleClass 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: 2
return 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 /MD, /MT, /LD (Use Run-Time Library), /MD, /MT, /LD (Use Run-Time Library), and /MD, /MT, /LD (Use Run-Time Library). |
_DLL | Defined when /MD or /MDd (Multithreaded DLL) is specified. If the multithreaded DLL is specified, _MT is also defined. |
__FUNCDNAME__ | Valid only in a function. Defines the compiler-generated unique identifier 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__ macros
void 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 | Defines 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 operating systems (no longer supported). |
_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 Values for _M_IX86 >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: |
_M_MPPC | Defined for Power Macintosh operating systems (no longer supported). |
_M_MRX000 | Defined for MIPS operating systems (no longer supported). |
_M_PPC | Defined for PowerPC operating systems (no longer supported). |
_M_X64 | Defined for x64 processors. |
_MANAGED | Defined to be 1 when /clr is specified. |
_MFC_VER | Defines the MFC version. In Visual Studio 2008, _MFC_VER is defined as 0x0900. |
_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 VC++ 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 VC++ 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 VC++ compiler is 15.00.20706.01, the _MSC_VER macro evaluates to 1500. In Visual Studio 2008, _MSC_VER is defined as 1500. |
__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. If the multithreaded DLL is specified, _DLL is also defined. |
_NATIVE_WCHAR_T_DEFINED | Defined when /Zc:wchar_t is used. |
_OPENMP | Defined when you compile 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. |