Lists the predefined ANSI/ISO C99 and Microsoft C++ implementation preprocessor macros.
The compiler recognizes predefined ANSI/ISO C99 C preprocessor macros, and the Microsoft C++ implementation provides several more. These preprocessor macros take no arguments and cannot be redefined. Some of the predefined macros listed in this article are defined with multiple values.
ANSI-Compliant Predefined Macros
| 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 literal. To ensure that the full path to the file is displayed, use /FC (Full Path of Source Code File in Diagnostics). | 
| __func__ | Returns the unqualified and unadorned name of the enclosing function as an array of char.  | 
| __LINE__ | The line number in the current source file. The line number is a decimal integer literal. It can be changed with a #line directive. | 
| __STDC__ | Indicates conformance with the ANSI/ISO C99 standard. Defined as the integer literal 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 form hh: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. | 
Microsoft-Specific Predefined Macros
| Macro | Description | 
|---|---|
| _ATL_VER | Defines the ATL version, encoded as an integer literal. | 
| __AVX__ | Defined when /arch:AVX or /arch:AVX2 is specified. | 
| __AVX2__ | Defined when /arch:AVX2 is specified. | 
| _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 is an integer literal encoded in the following format: Mmmbbbbb where, 
  | 
| __cplusplus_cli | Defined when you compile with /clr, /clr:pure, or /clr:safe. Value of __cplusplus_cli is the integer literal 200406. __cplusplus_cli is in effect throughout the translation unit.  | 
| __cplusplus_winrt | Defined when you use the /ZW option to compile. The value of __cplusplus_winrt is the integer literal 201009. | 
| __COUNTER__ | Expands to an integer literal 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. In main, the application declares three objects of type exampleClass, using __COUNTER__ as the unique identifier parameter.  | 
| __cplusplus | Defined for C++ programs only. | 
| _CPPRTTI | Defined for code compiled with /GR (Enable Run-Time Type Information). | 
| _CPPUNWIND | Defined for code compiled by using one of the /EH (Exception Handling Model) flags. | 
| _DEBUG | |
| _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 literal. __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.  | 
| __FUNCSIG__ | Valid only in a function. Defines the signature of the enclosing function as a string literal. __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 literal. __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 as an integer literal.  | 
| _M_AMD64 | Defined for compilations that target x64 processors. | 
| _M_ARM | Defined for compilations that target ARM 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 compilations that target x86 processors. This is not defined for x64 processors. | 
| _M_ARM_FP | Expands to an integer literal value indicating which /arch compiler option was used: 
 | 
| _M_IX86_FP | Expands to an integer literal value indicating which /arch compiler option was used: 
 | 
| _M_X64 | Defined for compilations that target x64 processors. | 
| _MANAGED | Defined to be 1 when /clr is specified. | 
| _MFC_VER | Defines the MFC version, encoded as an integer literal. | 
| _MSC_BUILD | Evaluates to an integer literal that contains 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 an integer literal that encodes 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 an integer literal that encodes 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 17.00.51106.1, the _MSC_VER macro evaluates to 1700. Type cl /? at the command line to view the compiler's version number. | 
| __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, evaluates to an integer literal representing the date of the OpenMP specification implemented by Visual C++.  | 
| _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. |