列出预定义的 ANSI C和C++ Microsoft实现宏。
请参见下表。有关更多信息。
|
宏 |
说明 |
|---|---|
|
__DATE__ |
Mmm 与在库函数生成相同的日期。TIME.H.声明的 asctime。 |
|
__FILE__ |
/FC(所诊断源代码文件的完整路径)。 |
|
__LINE__ |
#line 指令。 |
|
__STDC__ |
/Za 编译器选择和不生成C++代码;否则为未定义。 |
|
__TIME__ |
hh: 为: ss的字符串。 |
|
__TIMESTAMP__ |
日期 为从1的整数为31。 |
|
宏 |
说明 |
|---|---|
|
_ATL_VER |
定义ATL版本。 _ATL_VER 定义为0x1000。 |
|
_CHAR_UNSIGNED |
/J 指定。 |
|
__CLR_VER |
返回的值具有以下格式: Mmmbbbbb 其中,
// clr_ver.cpp
// compile with: /clr
using namespace System;
int main() {
Console::WriteLine(__CLR_VER);
}
|
|
__cplusplus_cli |
__cplusplus_cli实际上就是该翻译单元中。 // cplusplus_cli.cpp
// compile with: /clr
#include "stdio.h"
int main() {
#ifdef __cplusplus_cli
printf("%d\n", __cplusplus_cli);
#else
printf("not defined\n");
#endif
}
|
|
__COUNTER__ |
当您使用预编译标头时,__COUNTER__ 确保其状态。 __COUNTER__ 分配唯一标识符到同一类型的三个不同的对象。 构造函数采用整数作为参数。 __COUNTER__ 作为唯一标识符参数。 // Demonstration of __COUNTER__, assigns unique identifiers to
// different objects of the same type
int main(int argc, char** argv)
{
// __COUNTER__ is initially defined as 0
exampleClass e1(__COUNTER__);
// having been referenced, __COUNTER__ is now defined as 1
exampleClass e2(__COUNTER__);
// __COUNTER__ is now defined as 2
exampleClass e3(__COUNTER__);
printf("e1 ID: %i\n", e1.GetID());
printf("e2 ID: %i\n", e2.GetID());
printf("e3 ID: %i\n", e3.GetID());
// Output
// ------------------------------
// e1 ID: 0
// e2 ID: 1
// e3 ID: 2
return 0;
}
|
|
__cplusplus |
定义仅适用于C++程序。 |
|
_CPPRTTI |
|
|
_CPPUNWIND |
|
|
_DEBUG |
/MTd。 |
|
_DLL |
/MD或/MDd (多线程的DLL)指定。 |
|
__FUNCDNAME__ |
修饰名 作为字符串。 /P 编译器选项,__FUNCDNAME__ 不展开。 __FUNCTION__ 宏显示函数信息。 // Demonstrates functionality of __FUNCTION__, __FUNCDNAME__, and __FUNCSIG__ macros
void exampleFunction()
{
printf("Function name: %s\n", __FUNCTION__);
printf("Decorated function name: %s\n", __FUNCDNAME__);
printf("Function signature: %s\n", __FUNCSIG__);
// Sample Output
// -------------------------------------------------
// Function name: exampleFunction
// Decorated function name: ?exampleFunction@@YAXXZ
// Function signature: void __cdecl exampleFunction(void)
}
|
|
__FUNCSIG__ |
定义封闭函数的签名为字符串。 /P 编译器选项,__FUNCSIG__ 不展开。 __cdecl。 __FUNCDNAME__。 |
|
__FUNCTION__ |
定义封闭函数的修饰名称作为字符串。 /P 编译器选项,__FUNCTION__ 不展开。 __FUNCDNAME__。 |
|
_INTEGRAL_MAX_BITS |
报告最大大小(以位)一个整型。 // integral_max_bits.cpp
#include <stdio.h>
int main() {
printf("%d\n", _INTEGRAL_MAX_BITS);
}
|
|
_M_ALPHA |
定义为DEC APPHA的平台(不再支持)。 |
|
_M_AMD64 |
定义为x64处理器。 |
|
_M_CEE |
定义了例如使用 /clr 的生成(/clr:oldSyntax,/clr:safe的所有窗体,)。 |
|
_M_CEE_PURE |
定义用于 /clr:pure的生成。 |
|
_M_CEE_SAFE |
定义用于 /clr:safe的生成。 |
|
_M_IX86 |
对于x64处理器定义。 |
|
_M_IA64 |
定义为 Itanium 处理器家族(ipf) 64位处理器。 |
|
_M_ARM_FP |
扩展到值指示使用了哪个 /arch 编译器选项:
|
|
_M_IX86_FP |
扩展到值指示使用了哪个 /arch 编译器选项:
|
|
_M_MPPC |
定义了Power Macintosh平台(不再支持)。 |
|
_M_MRX000 |
定义了MIPS平台(不再支持)。 |
|
_M_PPC |
定义了PowerPC平台(不再支持)。 |
|
_M_X64 |
定义为x64处理器。 |
|
_MANAGED |
/clr 指定。 |
|
_MFC_VER |
_MFC_VER 定义为0x0A00。 |
|
_MSC_BUILD |
例如,因此,如果Visual C++编译器的版本号为15.00.20706.01,_MSC_BUILD 宏计算结果为1。 |
|
_MSC_EXTENSIONS |
其值,那么,当定义,为1。 |
|
_MSC_FULL_VER |
键入 cl /? 在命令行上查看编译器的版本号。 |
|
_MSC_VER |
专业数字为句点分隔的版本号的第一个元素,并且该次版本号是第二个元素。 例如,因此,如果Visual C++编译器的版本号为15.00.20706.01,_MSC_VER 宏计算结果为1500。 _MSC_VER 定义为1600。 |
|
__MSVC_RUNTIME_CHECKS |
/RTC 编译器选项指定。 |
|
_MT |
/MT或/MTd (多线程)指定。 |
|
_NATIVE_WCHAR_T_DEFINED |
/Zc: wchar_t。 |
|
_OPENMP |
定义,当使用/openmp进行编译时,返回表示OpenMP规范日期的整数实现由Visual C++。 // _OPENMP_dir.cpp
// compile with: /openmp
#include <stdio.h>
int main() {
printf("%d\n", _OPENMP);
}
|
|
_VC_NODEFAULTLIB |
/Zl(省略默认库名) 有关更多信息。 |
|
_WCHAR_T_DEFINED |
/Zc: wchar_t,或者wchar_t在项目中的系统标头文件中定义的。 |
|
_WIN32 |
始终定义。 |
|
_WIN64 |
定义为Win64应用程序。 |
|
_Wp64 |
/Wp64时。 |
如下表所示,编译器生成反映指定的处理器选项的预处理器标识符的值。
|
选项在开发环境中 |
命令行选项 |
得到的值。 |
|---|---|---|
|
组合 |
/GB |
将来的编译器会发出一个不同的值反映主导处理器。) |
|
Pentium |
/G5 |
_M_IX86 = 500 |
|
Pentium Pro、Pentium II和Pentium III |
/G6 |
_M_IX86 = 600 |
|
80386 |
/G3 |
_M_IX86 = 300 |
|
80486 |
/G4 |
_M_IX86 = 400 |