轉 VC中常用的巨集

2021-06-11 22:31:11 字數 3377 閱讀 9151

我們在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...