Pre-defined Macros

9/7/2007

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 (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 /EHsc (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 /Ze (Disable Language Extensions) compiler option (the default).

    Its value, when defined, is 1.

  • _MSC_VER
    Defines the compiler version.

    Defined as 1200 or greater for Microsoft Visual C++ 6.0 or later.

    Always defined.

  • _WIN32
    Defined for applications for Win32.

    Always defined.

See Also

Other Resources

Differences Between Desktop and Device Compilers