The device compilers recognize seven predefined ANSI C macros and the Microsoft C++ implementation provides several more.
These macros take no arguments and cannot be redefined. Their value, except for __LINE__ and __FILE__, must be constant throughout compilation.
The following table provides additional information about predefined macros, some of which are defined with multiple values.
|
Macro
|
Description
|
| __DATE__ | The compilation date of the current source file. The date is a string literal of the form Mmm dd yyyy. |
| __FILE__ | The name of the current source file. __FILE__ expands to a string surrounded by double quotation marks. |
| __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 /EP (Preprocess to stdout Without #line Directives) or /P (Preprocess to a File) compiler options. |
| __LINE__ | The line number in the current source file. The line number is a decimal integer constant. It can be altered with a #line directive. |
| __STDC__ | Indicates full conformance with the ANSI C standard. Defined as the integer constant 1 only if the /Za, /Ze (Disable Language Extensions) 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 Macros
The following table shows additional predefined macros that are Microsoft-specific.
- _CHAR_UNSIGNED
-
Default char type is unsigned.
Defined when /J (Default char Type Is unsigned) is specified.
- __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).
- _MFC_VER
-
Defines the MFC version.
Defined as 0x0600 for Microsoft Foundation Class Library 6.0 or later.
Always defined.
- _MSC_EXTENSIONS
-
This macro is defined when compiling with the /Za, /Ze (Disable Language Extensions) compiler option (the default).
Its value, when defined, is 1.
- _MSC_VER
-
Defines the compiler version.
Defined as 1200 for Microsoft Visual C++ 6.0 or later.
Always defined.
- _WIN32
-
Defined for applications for Win32.
Always defined.
Other Resources
Differences Between Desktop and Device Compilers