Macro |
Description |
_ATL_VER |
Defines the ATL version. |
_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.
Copy Code
// clr_ver.cpp
// compile with: /clr
using namespace System;
int main() {
Console::WriteLine(__CLR_VER);
} |
__cplusplus_cli |
Defined when compiling with /clr, /clr:pure, or /clr:safe. Value of __cplusplus_cli is 200406. __cplusplus_cli is in effect throughout the translation unit.
Copy Code
// 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 compiland. __COUNTER__ remembers its state when using precompiled headers. If the last __COUNTER__ value was 4 after building a precompiled header (PCH), it will start with 5 on each PCH use.
__COUNTER__ lets you generate unique variable names. You can use token pasting with a prefix to make a unique name. For example:
Copy Code
// pre_mac_counter.cpp
#include <stdio.h>
#define FUNC2(x,y) x##y
#define FUNC1(x,y) FUNC2(x,y)
#define FUNC(x) FUNC1(x,__COUNTER__)
int FUNC(my_unique_prefix);
int FUNC(my_unique_prefix);
int main() {
my_unique_prefix0 = 0;
printf_s("\n%d",my_unique_prefix0);
my_unique_prefix0++;
printf_s("\n%d",my_unique_prefix0);
} |
__cplusplus |
Defined for C++ programs only. |
_CPPLIB_VER |
Defined if you include any of the C++ Standard Library headers; reports which version of the Dinkumware header files are present. |
_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 compiling with /LDd, /MDd, and /MTd. |
_DLL |
Defined when /MD or /MDd (Multithread DLL) is specified. |
__FUNCDNAME__ |
Valid only within a function and returns the decorated name of the enclosing function (as a string). __FUNCDNAME__ is not expanded if you use the /EP or /P compiler option. |
__FUNCSIG__ |
Valid only within a function and returns 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. |
__FUNCTION__ |
Valid only within a function and returns the undecorated name of the enclosing function (as a string). __FUNCTION__ is not expanded if you use the /EP or /P compiler option. |
_INTEGRAL_MAX_BITS |
Reports the maximum size (in bits) for an integral type.
Copy Code
// 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_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 details. |
_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, 0x0700 represents MFC version 7. |
_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 compiling 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. |
__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++.
Copy Code
// _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. |