导读:
paste from MSDN
notice: may be include "stdio.h"
C/C++ Preprocessor Reference
Predefined MacrosSee Also
Macros | Preprocessor Operators | Preprocessor Directives
The compiler recognizes 10 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. Some of the
predefined macros listed below are defined with multiple
values. See the following tables for more information.
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 surrounded
by double quotation marks.
You can create your own wide string version of __FILE__ as follows:
#include
#define WIDEN2(x) L ## x
#define WIDEN(x) WIDEN2(x)
#define __WFILE__ WIDEN(__FILE__)
wchar_t *pwsz = __WFILE__;
void main()
{
}
__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 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.
_CHAR_UNSIGNED Default char type is unsigned. Defined when /J is specified.
__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:
#include
#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);
void main() {
my_unique_prefix0 = 0;
printf("/n%d",my_unique_prefix0);
my_unique_prefix0++;
printf("/n%d",my_unique_prefix0);
}
__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 compiling with /LDd, /MDd, /MLd, 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.
__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.
_M_ALPHA Defined for DEC ALPHA platforms. It is defined
as 1 by the ALPHA compiler, and it is not defined
if another compiler is used.
_M_IX86 Defined for x86 processors. See Values for _M_IX86 for more details.
_M_IA64 Defined for 64-bit processors.
_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).
_MANAGED Defined to be 1 when /clr is specified.
_MFC_VER Defines the MFC version. For example, 0x0700 represents MFC version 7.
_MSC_EXTENSIONS This macro is defined when compiling
with the /Ze compiler option (the default). Its value,
when defined, is 1.
_MSC_VER Defines the
major and minor versions of the compiler. For example,
1300 for Microsoft Visual C++ .NET. 1300 represents
version 13 and no point release. This represents the
fact that there have been a total of 13 releases of
the compiler.
If you type cl /? at the
command line, you will see the full version for the
compiler you are using.
__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.
_WCHAR_T_DEFINED Defined when wchar_t is defined.
Typically, wchar_t is defined when you use /Zc:wchar_t
or when typedef unsigned short wchar_t; is executed in
code.
_WIN32 Defined for applications for Win32 and Win64. Always defined.
_WIN32 Defined for applications for Win64.
_Wp64 Defined when specifying /Wp64.
As shown in following table, the compiler generates a
value for the preprocessor identifiers that reflect the
processor option specified.
Values for _M_IX86
Option in Development Environment Command-Line Option Resulting Value
Blend /GB _M_IX86 = 600 (Default. Future compilers
will emit a different value to reflect the dominant
processor.)
Pentium /G5 _M_IX86 = 500
Pentium Pro, Pentium II, and Pentium III /G6 _M_IX86 = 600
80386 /G3 _M_IX86 = 300
80486 /G4 _M_IX86 = 400
本文转自
http://topic.csdn.net/t/20021217/16/1269818.html