有時候我們希望定義同乙個巨集,但是在選擇不同平台進行編譯的時候希望該巨集的值指向不同的值。類似vs自帶的platform巨集,在win32平台編譯的時候,該巨集指向win32,在選擇x64平台進行編譯的時候,該巨集指向x64。如下圖:
如果我們想定義乙個巨集,在win32平台下指向x86 在x64平台下指向x64 該多好啊!!!(比vs提供的巨集更符合我們的需求)!
下面就是如何做(以vs2010sp1為例):
通過view ->property manager開啟屬性管理器。
紅框部分就是我們需要編輯的檔案。先雙擊任意乙個microsoft.cpp.win32.user
選擇user manager 然後點選add macro,就可以新增乙個只在win32平台下使用的巨集了。
注意:通過修改microsoft.cpp.win32.user來新增的巨集只在本機有效,因為修改的是vs路徑下的對應檔案。
同理我們可以編輯x64平台下的巨集,如下圖
好,編輯好後儲存,我們可以利用剛剛檢視vs自帶的platform巨集一樣檢視我們自定義的巨集,以win32平台為例截圖如下:
注意:configuration是all configurations 也就是說本次改動對debug release都有效!是不是很爽!
說明:我們也可以新增自己的property sheet來根據自己的需求來更加個性化的定製巨集!
比如還想根據configuration和platform一起決定乙個巨集到底是指向什麼值!
那麼我們可以通過新增自定義的property sheet來解決!方法和剛剛差不多,還是開啟property manager,上次我們是直接修改的vs提供的property sheet,這次我們要新增自己的property sheet。我們可以在工程名上右鍵新增,如下圖
注意:在工程名字上新增的property sheet是針對所有平台 所有configuration的
我們也可以在某個子項下新增比如 debug | win32下。
效果如下:
我們也可以新增乙個已經存在的property sheet。在右鍵的時候選擇add existing property sheet即可選擇乙個。
通過這個辦法我們可以把剛剛配置好的debugwin32 property sheet 插入到release | win32下,那麼就可以配置出專門針對win32使用的property sheet了,各種組合任大家發揮!好了,囉嗦了這麼多,希望對大家有用!
參考**:
來自為知筆記(wiz)
怎樣在不同平台間定義資料
在分析mdns原始碼時遇到這樣一句 if defined lp64 defined lp64 typedef signed int mdnss32 typedef unsigned int mdnsu32 elif defined ilp64 defined ilp64 typedef signed...
巨集定義及帶引數的巨集定義
include 巨集定義,通常用於定義常量,在 轉換成二進位制檔案時會將 中的巨集名稱替換成值 define 巨集名稱 值 define a 1 帶引數的巨集 fun a,b 為巨集的名稱 a b為巨集的值 帶引數的巨集比函式效率高 define fun a,b a b 為了保證替換結果,最好加入 ...
巨集定義的巨集展開錯誤
巨集定義自身的缺陷是指巨集展開錯誤,主要是由於運算子優先順序等原因,使得巨集展開後的語義與餘項發生偏差。define max a,b a b?a b define mul a,b a b int main int x 4.y 3 int max max x,y 2 int product mul x...