我們在vs環境中開發的時候,會遇到很多巨集定義,這些巨集可以應用到**中,或用於編譯、工程選項等設定,總之是我們開發中必不可少的工具,有必要做乙個總結。有些巨集是c/c++定義的,有些巨集是vc環境預定義的。
1、c/c++中的巨集
__cplusplus如果當前編譯器為c++,該值為1。
__date__當前原始碼的編譯日期,格式為mmm dd yyyy。
__time__當前原始碼的編譯時間,格式為hh:mm:ss。
__timestamp__當前原始碼檔案最後被修改的日期和時間,格式為ddd mmm date hh:mm:ss yyyy。
__file__當前原始碼檔名。
__line__當前插入點所在原始碼的行號。
__function__當前插入點所在函式名。
__stdc__標識是否嚴格遵循ansi c標準,編譯器選項/za被設定時該巨集定義為1,表示遵循標準。
__va_args__可變引數巨集,用來傳遞可變參數列;該巨集並非被所有編譯器支援。
2、vc中的巨集
_debug當我們的工程設定為debug版編譯時,編譯器會定義該巨集;該巨集與#ifdef等預編譯語句一起進行條件編譯,以區分debug和release版本功能。
assert斷言,當該巨集後面的語句值為0時引起程式中斷,只在debug版中有效。
verify與assert功能類似,在debug和release版本中均有效。
assert_valid檢查後面引數指標是否為空,只在debug版中有效。
trace格式化輸出字串資訊。
_atl_ver指明atl的版本。
_clr_ver指明公共執行時(common language runtime)的版本。
_counter_乙個從0開始的全域性的計數器,每次用於原始檔或在原始檔中被引用標頭檔案時,自動加1。
_dll當工程型別為動態鏈結庫時,該值為1。
winver指示windows版本。
_mfc_ver指示mfc版本。
_msc_ver指示編譯器版本。
_win32為win32和win64程式定義。
3、vc ide預定義巨集
這類巨集主要應用在工程屬性設定中,包括名稱、路徑、編譯等相關字串。比如解決方案位c:\soln\soln.sln,專案位於c:\soln\proj\proj.vcproj,中間目錄為debugint,輸出目錄為c:\myoutputs,輸出名稱為game.exe時,各個巨集的值依次如下。
$(configurationname)版本名,如debug或release。
$(platformname)當前平台名,如win32。
$(intdir)中間目錄名,即為中間檔案指定的相對於專案目錄的目錄路徑,值為debugint。
$(outdir)輸出檔案目錄的路徑,值為c:\myoutputs。
$(devenvdir)vs的安裝目錄。
$(inputdir)輸入檔案目錄,值為c:\soln\proj。
$(inputpath)輸入檔案全路徑名,值為c:\soln\proj\proj.vcproj。
$(inputname)輸入檔名,值為proj。
$(inputfilename)輸入檔名(帶字尾),值為proj.vcproj。
$(inputext)輸入副檔名,值為.vcproj。
$(projectdir)專案目錄,同$(inputdir)。
$(projectpath)專案全路徑名,同$(inputpath)。
$(projectname)同$(inputname)。
$(projectfilename)同$(inputfilename)。
$(projectext)同$(projectext)。
$(solutiondir)解決方案目錄,值為c:\soln。
$(solutionpath)解決方案路徑,值為c:\soln\soln.sln。
$(solutionname)解決方案名,值為soln。
$(solutionfilename)解決方案名(帶字尾),值為soln.sln。
$(solutionext)解決方案副檔名,值為.sln。
$(targetdir)輸出檔案目錄,值為c:\myoutputs\。
$(targetpath)輸出檔案路徑名,c:\myoutputs\game.exe。
$(targetname)輸出檔名,值為game。
$(targetfilename)輸出檔案全名,值為game.exe。
$(targetext)輸出副檔名,值為.exe。
$(vsinstalldir)vs安裝目錄。
$(vcinstalldir)vc安裝目錄。
$(frameworkdir)framework安裝目錄。
$(frameworkversion)framework版本資訊。
$(frameworksdkdir)framework sdk安裝目錄。
**:
VC中常用的巨集 轉
我們在vs環境中開發的時候,會遇到很多巨集定義,這些巨集可以應用到 中,或用於編譯 工程選項等設定,總之是我們開發中必不可少的工具,有必要做乙個總結。有些巨集是c c 定義的,有些巨集是vc環境預定義的。1 c c 中的巨集 cplusplus如果當前編譯器為c 該值為1。date 當前原始碼的編譯...
VC中常用的巨集
我們在vs環境中開發的時候,會遇到很多巨集定義,這些巨集可以應用到 中,或用於編譯 工程選項等設定,總之是我們開發中必不可少的工具,有必要做乙個總結。有些巨集是c c 定義的,有些巨集是vc環境預定義的。1 c c 中的巨集 cplusplus如果當前編譯器為c 該值為1。date 當前原始碼的編譯...
C中常用的巨集
define 定義乙個預處理巨集 undef 取消巨集的定義 include 包含檔案命令 if 編譯預處理中的條件命令,相當於c語法中的if語句 ifdef 判斷某個巨集是否被定義,若已定義,執行隨後的語句 ifndef 與 ifdef相反,判斷某個巨集是否未被定義 elif 若 if,ifdef...