符合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...