VS2013 预定义的宏 Visual Studio 2013 预定义的宏
列出预定义的 ANSI/ISO C99 和 Microsoft C++ 实现预处理宏。
本文中所列的一些预定义宏用多个值进行定义。
宏 |
说明 |
---|---|
__DATE__ |
Mmm 与 TIME.H 中声明的 asctime 库函数生成的日期相同。 |
__FILE__ |
若要确保显示文件的完整路径,请使用 /FC(所诊断源代码文件的完整路径)。 |
__func__ |
以 char 数组形式返回封闭函数的未限定和未修饰名称。 void Foo(){ printf("%s ", __func__); } // prints “Foo” |
__LINE__ |
#line 指令改变。 |
__STDC__ |
只有提供了 /Za 编译器选项但未编译 C++ 代码时才定义为整数型常数 1;否则是不确定的。 |
__TIME__ |
hh:mm:ss 形式的字符串文本。 |
__TIMESTAMP__ |
Date 为从 1 到 31 的整数。 |
宏 |
说明 |
---|---|
_ATL_VER |
定义 ATL 版本,编码为整数文本。 |
__AVX__ |
指定了 /arch:AVX 或 /arch:AVX2 时进行定义。 |
__AVX2__ |
指定了 /arch:AVX2 时进行定义。 |
_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 ", __cplusplus_cli); #else printf("not defined "); #endif } |
__cplusplus_winrt |
__cplusplus_winrt 的值是整数文本 201009。 |
__COUNTER__ |
当你使用预编译标头时,__COUNTER__会记住其状态。 __COUNTER__,将唯一标识符分配到同一类型的三个不同的对象。 构造函数将一个整数作为参数。 // initialize object with a read-only unique ID exampleClass::exampleClass(int nID) { m_nID = nID; } int exampleClass::GetID() { return m_nID; } __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 ", e1.GetID()); printf("e2 ID: %i ", e2.GetID()); printf("e3 ID: %i ", e3.GetID()); // Output // ------------------------------ // e1 ID: 0 // e2 ID: 1 // e3 ID: 2 return 0; } |
__cplusplus |
仅定义 C++ 程序。 |
_CPPRTTI |
定义使用 /GR(启用运行时间类型信息)编译的代码。 |
_CPPUNWIND |
定义通过使用其中一个 /EH(异常处理模型) 标志编译的代码。 |
_DEBUG |
|
_DLL |
在指定 /MD 或 /MDd(多线程 DLL)时定义。 |
__FUNCDNAME__ |
将封闭函数的修饰名定义为字符串文本。 如果你使用的是 __FUNCDNAME__/EP 或 /P 编译器选项, 不展开。 __FUNCTION__ 宏来显示函数信息。 // Demonstrates functionality of __FUNCTION__, __FUNCDNAME__, and __FUNCSIG__ macros void exampleFunction() { printf("Function name: %s ", __FUNCTION__); printf("Decorated function name: %s ", __FUNCDNAME__); printf("Function signature: %s ", __FUNCSIG__); // Sample Output // ------------------------------------------------- // Function name: exampleFunction // Decorated function name: ?exampleFunction@@YAXXZ // Function signature: void __cdecl exampleFunction(void) } |
__FUNCSIG__ |
将封闭函数的签名定义为字符串文本。 如果你使用的是 __FUNCSIG__/EP 或 /P 编译器选项, 不展开。 __cdecl。 __FUNCDNAME__。 |
__FUNCTION__ |
将封闭函数的未修饰名定义为字符串。 如果你使用的是 __FUNCTION__/EP 或 /P 编译器选项, 不展开。 __FUNCDNAME__。 |
_INTEGRAL_MAX_BITS |
报告整型作为整形文本的最大大小(以位为单位)。 // integral_max_bits.cpp #include <stdio.h> int main() { printf("%d ", _INTEGRAL_MAX_BITS); } |
_M_AMD64 |
为面向 x64 处理器的编译进行定义。 |
_M_ARM |
为面向 ARM 处理器的编译进行定义。 |
_M_CEE |
定义使用任何形式的 /clr(例如 /clr:oldSyntax、/clr:safe)的编译。 |
_M_CEE_PURE |
定义使用 /clr:pure 的编译。 |
_M_CEE_SAFE |
定义使用 /clr:safe 的编译。 |
_M_IX86 |
这不是为 x64 处理器定义的。 |
_M_ARM_FP |
扩展为指示使用哪个 /arch 编译器选项的整数型值:
|
_M_IX86_FP |
扩展为指示使用哪个 /arch 编译器选项的整数型值:
|
_M_X64 |
为面向 x64 处理器的编译进行定义。 |
_MANAGED |
当指定 /clr 时,定义为 1。 |
_MFC_VER |
定义 MFC 版本,编码为整数文字。 |
_MSC_BUILD |
例如,如果 Visual C++ 编译器的版本号为 15.00.20706.01,则 _MSC_BUILD 宏计算结果为 1。 |
_MSC_EXTENSIONS |
定义时,值为 1。 |
_MSC_FULL_VER |
在命令行中键入 cl /?,查看编译器的版本号。 |
_MSC_VER |
主版本号是句点分隔的版本号的第一个部分,而次版本号是第二个部分。 在命令行中键入 cl /?,查看编译器的版本号。 |
__MSVC_RUNTIME_CHECKS |
当指定其中一个 /RTC 编译器选项时定义。 |
_MT |
当指定 /MD 或 /MDd(多线程 DLL)或 /MT 或 /MTd(多线程)时定义。 |
_NATIVE_WCHAR_T_DEFINED |
当使用 /Zc:wchar_t 时定义。 |
_OPENMP |
当使用 /openmp 进行编译时定义,求值得出表示由 Visual C++ 实现的 OpenMP 规范日期的整数文本。 // _OPENMP_dir.cpp // compile with: /openmp #include <stdio.h> int main() { printf("%d ", _OPENMP); } |
_VC_NODEFAULTLIB |
当使用 /Zl 时定义;有关详细信息,请参阅 /Zl(省略默认库名)。 |
_WCHAR_T_DEFINED |
当项目中包含的系统标头文件使用 /Zc:wchar_t 或者定义 wchar_t 时定义。 |
_WIN32 |
始终定义。 |
_WIN64 |
定义为Win64应用程序。 |
http://www.cnblogs.com/oloroso/p/5506097.html