当前位置: 技术问答>linux和unix
__FUNCTION__在Linux 中是什么意思?
来源: 互联网 发布时间:2015-01-13
本文导语: 我要是想在Windows下面也实现同样的宏定义,该怎么做? Thx | paste from MSDN notice: may be include "stdio.h" C/C++ Preprocessor Reference Predefined MacrosSee Also Macros | Preprocessor Operators | Preprocesso...
我要是想在Windows下面也实现同样的宏定义,该怎么做?
Thx
Thx
|
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
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
|
unistd.h是linux下的大部分的API声明的头文件,在WIN下对应的应该是WINDOW。H文件