C C 預處理器的預定義巨集

2021-07-02 01:17:25 字數 4199 閱讀 6021

符合ansi的預定義巨集:

__date__

:表示當前原始檔編譯時的日期,格式為:月/天/年(mmm dd yyyy)。

__file__

:表示當前正在處理的原始檔名稱。

__line__

:表示當前正在處理的原始檔的行,可以用#line指令修改。

__stdc__

:表示是ansi c標準。只有在編譯器選項指定了/za,並且不是編譯c++程式時,被定義為常整數1;否則未定義。

__time__

:表示當前原始檔的最近編譯時的時間,格式為:小時/分/秒(hh:mm:ss)。

__timestamp__

:表示當前原始檔的最近修改日期和時間,格式為:ddd mmm dd hh:mm:ss yyyy,其中ddd是星期的縮寫。

microsoft相關的巨集

_atl_ver

:定義了atl的版本。

_char_unsigned

:設定預設的char型別是unsigned的。只有在編譯器選項/j指定時才有定義。

__clr_ver

:指定了應用程式編譯時的通用語言執行時(clr)的版本。格式為:mmmbbbbb,其中m是clr的主版本,mm是clr的次版本,bbbbb是build號。

__cplusplus_cli

:只有在用/clr,/clr:pure或/clr:safe編譯時才有定義。__cplusplus_cli的值是200406。

__counter__

:為乙個整數,從0開始,每出現一次,其值增加1。可以使用__counter__作為字首來產生唯一的名字。

__cplusplus

只有在編譯c++程式時才有定義,一般用於區分c程式和c++程式。

_cpplib_ver

:在程式中如果包含了任意c++標準庫標頭檔案,則_cpplib_ver有定義。用於顯示正在使用的標頭檔案的版本。

_cpprtti

:用於標識編譯器是否指定了rtti。如果編譯器選項中設定了/gr(開啟執行時型別資訊機制-rtti),則_cpprtti有定義。

_cppunwind

:用於標識編譯器是否開啟異常處理。如果編譯器選項中設定了/gx,則_cpprtti有定義。

_debug

:用於標識是debug模式。在編譯器指定了/ldd,/mdd或/mtd時才有定義。

_dll

:當編譯器選項指定了/md或/mdd(multithread dll)時才有定義。

__funcdname__

:只有在函式內部才有效。返回該函式經編譯器修飾後的名字。如果編譯器選項中設定了/ep或/p,則__funcdname__是未定義。

__funcsig__

:只有在函式內部才有效,並且返回該函式的簽名。乙個函式的簽名由函式名、引數列表、返回型別、內含的命名空間組成。如果它是乙個成員函式,它的類名和const/volatile限定符也將是簽名的一部分。在64位作業系統中,__cdecl是預設的函式呼叫方式。如果編譯器選項中設定了/ep或/p,則__funcsig__是未定義。

__function__

:只有在函式內部才有效。返回該函式未經修飾的名字。如果編譯器選項中設定了/ep或/p,則__function__是未定義。

_integral_max_bits

:表示整數型別的最大位數(bits)。

_m_alpha

:為dec alpha平台定義。(現在已不支援)

_m_cee

:當使用/clr的任意形式(/clr:oldsyntax, 例如/clr:safe)編譯時被定義。

_m_cee_pure

:當使用/clr:pure編譯時被定義。

_m_cee_safe

:當使用/clr:safe編譯時被定義。

_m_ix86

:為x86處理器架構定義。當值為300時說明是80386,值是400時說明是80486

_m_ia64

:為itanium處理器家族的64位處理器(ia64)架構定義。

_m_ix86_fp

:表示編譯器選項/arch的值。0:/arch未指定;1:指定/arch:sse;2:指定/arch:sse2

_m_mppc

:為power macintosh平台定義。(現在已不支援)

_m_mrx000

:為mips平台定義。(現在已不支援)

_m_ppc

:為powerpc平台定義。(現在已不支援)

_m_x64

:為x64處理器架構定義。

_managed

:當編譯器選項指定/clr時定義,其值為1。

_mfc_ver

:指定mfc版本。例如:0x0700表示mfc version 7。

_msc_build

:表示編譯器版本號的修訂號部分。修訂號是以時期進行分割的版本號的第四部分。例如:如果vc++編譯器的版本號是15.00.20706.01,則_msc_build的值為1。

_msc_extensions

:當指定編譯器選項/ze(預設)時有定義,其值為1。

_msc_full_ver

:表示編譯器的主,次版本號及build號。主版本號是整個版本號的第一部分,次版本號是整個版本號的第二部分,build號是整個版本號的第三部分。例如: 如果vc++編譯器的版本號是15.00.20706.01,則_msc_full_ver的值為150020706。可以在命令列鍵入cl /?來檢視編譯器的版本號。

_msc_ver

:表示編譯器的主,次版本號。例如: 如果vc++編譯器的版本號是15.00.20706.01,則_msc_ver的值為1500。

__msvc_runtime_checks

:當指定編譯器選項/rtc之一(/rtcs或/rtcu或/rtc1)時有定義。

_mt

:當指定編譯器選項/md或/mdd(multithreaded dll)或/mt或/mtd(multithreaded)時有定義。

_native_wchar_t_defined

:當指定編譯器選項/zc:wchar_t(將wchar_t視為內建型別)時有定義。

_openmp

:當指定編譯器選項/openmp時有定義,返回乙個表示visual c++中的openmp的日期的整數。

_vc_nodefaultlib

:當指定編譯器選項/zl(忽略預設庫名)時有定義。

_wchar_t_defined

:當指定編譯器選項/zc:wchar_t或工程中包含的系統標頭檔案中定義了wchar_t時有定義。

_win32

:為win32和win64應用程式定義。總有定義。

_win64

:為win64應用程式定義。

_wp64

:當指定編譯器選項/wp64時有定義。

預處理器之巨集定義

以 開頭的命令都是預處理命令,預處理不是c語言的語句,不能被編譯器編譯。所以在編譯之前需要使用預處理器做檔案的預處理工作。在編譯之前,所有的預處理語句都要被處理 替換或展開 eg1 一般巨集定義 define num 100eg2 有引數的巨集定義 define s a,b a beg3 寫乙個巨集...

預處理器的預定義巨集大全

符合ansi的預定義巨集 date 表示當前原始檔編譯時的日期,格式為 月 天 年 mmm dd yyyy file 表示當前正在處理的原始檔名稱。line 表示當前正在處理的原始檔的行,可以用 line指令修改。stdc 表示是ansi c標準。只有在編譯器選項指定了 za,並且不是編譯c 程式時...

xcodebuild 如何定義預處理器巨集

您在xcodebuild命令列上傳遞gcc preprocessor definitions。請記住,對於類似shell的單詞拆分和引用處理,將重新評估引數,因此您需要小心,尤其是當您的巨集值不僅僅是簡單的1時 例如,nsstring文字 同樣重要的是在你設定的值內擴充套件gcc preproces...