預先定義巨集
列出預先定義的 ANSI Microsoft C 和 C++ 實作巨集。
編譯器識別預先定義的 ANSI C 巨集, Microsoft C++ 實作提供了更多。這些巨集不使用引數,而不能重新定義。下列某些預先定義的巨集定義包含多個值。請參閱下表以取得詳細資訊。
ANSI 標準的預先定義巨集。
巨集 |
描述 |
---|---|
__DATE__ |
目前原始程式檔中編輯日期。這個日期是表單 Mmm yyyy 的 dd的字串常值 (String Literal)。月份名稱 Mmm 則會與程式庫函式會產生相同的日期。TIME.H. 宣告的 asctime 。 |
__FILE__ |
目前原始程式檔 (Source File) 的名稱。__FILE__ 展開為雙引號括住的字串。若要確保檔案的完整路徑所顯示的,請使用 /FC (診斷中的原始程式碼檔之完整路徑)。 |
__LINE__ |
在目前原始程式檔的行號。行號是十進位整數常數。它可以變更與 #line 指示詞。 |
__STDC__ |
表示完全符合與 ANSI C 標準。定義為整數常數 1 時,才會 /Za 編譯器選項和未編譯 C++ 程式碼;否則會是未定義的。 |
__TIME__ |
目前原始程式檔的新編譯時間。時間是表單 hh: " mm ": ss的字串常值 (String Literal)。 |
__TIMESTAMP__ |
目前原始程式檔中最近一次修改的日期和時間,表示為字串常值 (String Literal) 的格式 ddd Mmm 日期格式: " mm ": yyyy 的特性, ddd 是縮寫的週和 日期 是從 1 至 31 的整數。 |
Microsoft 專有的預先定義巨集。
巨集 |
描述 |
---|---|
_ATL_VER |
定義 ATL 版本。 在 Visual Studio 2010, _ATL_VER 定義為 0x1000。 |
_CHAR_UNSIGNED |
根據預設 char 型別為不帶正負號的。定義時, /J 指定。 |
__CLR_VER |
,在應用程式編譯,會定義所使用的 Common Language Runtime 版本。傳回的值會以下列格式: Mmmbbbbb 其中,
|
__cplusplus_cli |
定義,以編譯 /clr、 /clr:pure或 /clr:safe。__cplusplus_cli 的值是 200406。__cplusplus_cli 實際上是在這個轉譯單位中。
|
__COUNTER__ |
,用於原始程式檔的原始程式檔 (Source File) 或包含的標頭時,展開為 0 開始並加上 1 的整數。因此,使用先行編譯標頭檔時,__COUNTER__ 記住其狀態。 下列範例會使用 __COUNTER__ 指派唯一識別項為相同型別的三個不同的物件。 首先,會假設下列類別定義。建構函式會接受整數做為參數。
在主應用程式,宣告型別 exampleClass三個物件,使用 __COUNTER__ 當做唯一識別項參數。
|
__cplusplus |
定義 (僅限 C++ 程式。 |
_CPPRTTI |
定義用於編譯的程式碼。 /GR (啟用執行階段型別資訊)。 |
_CPPUNWIND |
定義用於編譯的程式碼。 /GX (啟用例外處理)。 |
_DEBUG |
|
_DLL |
定義時, /MD (英文) 或/MDd (英文) (多個執行緒的 DLL) 指定。 |
__FUNCDNAME__ |
只適用於函式中。定義封入函式的 裝飾名稱 做為字串。 如果您使用 /EP 或 /P 編譯器選項,__FUNCDNAME__ 未展開。 下列範例會使用 __FUNCDNAME__、 __FUNCSIG__和 __FUNCTION__ 巨集顯示函式資訊。
|
__FUNCSIG__ |
只適用於函式中。定義封入函式的簽章為字串。 如果您使用 /EP 或 /P 編譯器選項,__FUNCSIG__ 未展開。 在 64 位元作業系統上,呼叫慣例是 __cdecl 預設值。 如需範例,請參閱 __FUNCDNAME__。 |
__FUNCTION__ |
只適用於函式中。定義封入函式的裝飾名稱 (Undecorated Name) 做為字串。 如果您使用 /EP 或 /P 編譯器選項,__FUNCTION__ 未展開。 如需範例,請參閱 __FUNCDNAME__。 |
_INTEGRAL_MAX_BITS |
報告最大大小 (以位元組為單位) 的整數類資料型別的。
|
_M_ALPHA |
定義用於 DEC Alpha 平台 (已不再支援)。 |
_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 處理器系列 64 位元處理器。 |
_M_ARM_FP |
展開為這個值會指出所使用的 /arch 編譯器選項:
|
_M_IX86_FP |
展開為這個值會指出所使用的 /arch 編譯器選項:
|
_M_MPPC |
定義的電源 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 |
評估為編譯器版本號碼的主要、次要、組建編號元件。主要版本號碼是句號分隔的版本號碼的第一個元件,這個次要版本號碼是第二個元件,,和組建編號是第三個元件。例如,在中,如果 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 |
定義時, /MD (英文) 或/MDd (英文) (多個執行緒的 DLL) 或 /MT (英文) 或/MTd (英文) (多個執行緒) 指定。 |
_NATIVE_WCHAR_T_DEFINED |
定義使用時, /Zc: wchar_t 。 |
_OPENMP |
定義,當使用/openmp 編譯,傳回整數表示 OpenMP 規格的日期的整數實作 Visual C++ 時。
|
_VC_NODEFAULTLIB |
定義使用時, /Zl ;請參閱 /Zl (省略預設程式庫名稱) 以取得詳細資訊。 |
_WCHAR_T_DEFINED |
定義使用時, /Zc: wchar_t ,或者 wchar_t 在專案中所含的系統標頭檔中定義。 |
_WIN32 |
定義為 Win32 和 Win64 上套用。永遠會定義。 |
_WIN64 |
定義為 Win64 上套用。 |
_Wp64 |
定義,以指定 /Wp64時。 |
如下表所示,編譯器會建立指定的處理器選項的前置處理器識別項的值。
_M_IX86 的值
選項在開發環境中。 |
命令列選項 |
產生的值。 |
---|---|---|
混合 |
/GB |
_M_IX86 = 600 (預設值。將來的編譯器將發出不同的值會反映主控處理器)。 |
Pentium |
/G5 |
_M_IX86 = 500 |
Pro Pentium, Pentium II 和 Pentium III |
/G6 |
_M_IX86 = 600 |
80386 |
/G3 |
_M_IX86 = 300 |
80486 |
/G4 |
_M_IX86 = 400 |