列出預約義的 ANSI C和C++ Microsoft實現宏。多線程
編譯器識別預約義的ANSI C宏,而且Microsoft C++實現提供幾個更多。這些宏不帶參數,而且不能重定義。下面列出的某些預約義的宏定義與多個值。請參見下表。有關更多信息。ide
宏函數 |
說明spa |
---|---|
__DATE__操作系統 |
當前源文件的生成日期。該日期是窗體 Mmm yyyy的dd的字符串。月份名稱 Mmm 與在庫函數生成相同的日期。TIME.H.聲明的 asctime。.net |
__FILE__命令行 |
當前源文件的名稱。__FILE__ 擴展到雙引號括起來的字符串。若要確保文件的完整路徑顯示,請使用 /FC(所診斷源代碼文件的完整路徑)。線程 |
__LINE__翻譯 |
在當前源文件中的行號。行號是一個十進制整數常數。它能夠更改與 #line 指令。code |
__STDC__ |
指示徹底符合與 ANSI C標準。定義爲整型常數1,僅當提供 /Za 編譯器選擇和不生成C++代碼;不然爲未定義。 |
__TIME__ |
當前源文件的最新生成時。時間是窗體 hh: 爲: ss的字符串。 |
__TIMESTAMP__ |
當前源文件的上次修改日期和時間,是以字符串形式 ddd Mmm日期格式: 爲: yyyy的ss,ddd 是縮寫的星期和 日期 爲從1的整數爲31。 |
宏 |
說明 |
---|---|
_ATL_VER |
定義ATL版本。 在 Visual Studio 2010中,_ATL_VER 定義爲0x1000。 |
_CHAR_UNSIGNED |
默認 char 類型無符號。定義,當 /J 指定。 |
__CLR_VER |
當應用程序生成的,定義使用的公共語言運行時的版本。返回的值具備如下格式: Mmmbbbbb 其中,
// clr_ver.cpp // compile with: /clr using namespace System; int main() { Console::WriteLine(__CLR_VER); } |
__cplusplus_cli |
定義,在使用編譯 /clr、/clr:pure或 /clr:safe。__cplusplus_cli的值爲200406。__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__ |
用於源文件的源文件或包含的標頭時,擴展爲從0開始並提升x 1的整數。當您使用預編譯標頭時,__COUNTER__ 確保其狀態。 下面的示例使用 __COUNTER__ 分配惟一標識符到同一類型的三個不一樣的對象。 首先,假定下面的類定義。構造函數採用整數做爲參數。 在主,應用程序聲明類型 exampleClass三個對象,使用 __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 |
定義爲代碼編譯 /GR ("啓用運行時類型信息)。 |
_CPPUNWIND |
定義爲代碼編譯 /GX ("啓用異常處理)。 |
_DEBUG |
|
_DLL |
定義,當 /MD或/MDd (多線程的DLL)指定。 |
__FUNCDNAME__ |
僅在函數中有效。定義封閉函數的 修飾名 做爲字符串。 若是您使用的是,/EP 或 /P 編譯器選項,__FUNCDNAME__ 不展開。 下面的示例使用 __FUNCDNAME__、__FUNCSIG__和 __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__ |
僅在函數中有效。定義封閉函數的簽名爲字符串。 若是您使用的是,/EP 或 /P 編譯器選項,__FUNCSIG__ 不展開。 默認狀況下在64位操做系統上,調用約定是 __cdecl。 有關示例,請參見 __FUNCDNAME__。 |
__FUNCTION__ |
僅在函數中有效。定義封閉函數的修飾名稱做爲字符串。 若是您使用的是,/EP 或 /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 |
定義爲x86處理器。請參見下面 _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 |
定義爲1 /clr 指定。 |
_MFC_VER |
定義MFC版本。例如,在 Visual Studio 2010中,_MFC_VER 定義爲0x0A00。 |
_MSC_BUILD |
計算爲編譯器的版本號的版本號元素。版本號爲句點分隔的版本號的第四個元素。例如,所以,若是Visual C++編譯器的版本號爲15.00.20706.01,_MSC_BUILD 宏計算結果爲1。 |
_MSC_EXTENSIONS |
此宏定義,在使用編譯 /Ze 編譯器選項時(默認值)。其值,那麼,當定義,爲1。 |
_MSC_FULL_VER |
計算爲編譯器的版本號的major、minor和生成號元素。專業數字爲句點分隔的版本號的第一個元素,該次版本號是第二個元素,而且,生成號是第三個元素。例如,所以,若是Visual C++編譯器的版本號爲15.00.20706.01,_MSC_FULL_VER 宏計算結果爲150020706。鍵入 cl /? 在命令行上查看編譯器的版本號。 |
_MSC_VER |
計算爲編譯器的主版本號和次版本號元素。專業數字爲句點分隔的版本號的第一個元素,而且該次版本號是第二個元素。 例如,所以,若是Visual C++編譯器的版本號爲15.00.20706.01,_MSC_VER 宏計算結果爲1500。 在 Visual Studio 2010中,_MSC_VER 定義爲1600。 |
__MSVC_RUNTIME_CHECKS |
定義,在一個 /RTC 編譯器選項指定。 |
_MT |
|
_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 ;請參見 /Zl(省略默認庫名) 有關更多信息。 |
_WCHAR_T_DEFINED |
定義,當使用 /Zc: wchar_t,或者wchar_t在項目中的系統標頭文件中定義的。 |
_WIN32 |
定義爲Win32和警告的應用程序。始終定義。 |
_WIN64 |
定義爲Win64應用程序。 |
_Wp64 |
定義,指定 /Wp64時。 |
以下表所示,編譯器生成反映指定的處理器選項的預處理器標識符的值。
選項在開發環境中 |
命令行選項 |
獲得的值。 |
---|---|---|
組合 |
/GB |
_M_IX86 = 600 (默認值。未來的編譯器會發出一個不一樣的值反映主導處理器。) |
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 |