原 定義不同平台通用的巨集

2022-03-26 17:34:49 字數 1886 閱讀 3289

有時候我們希望定義同乙個巨集,但是在選擇不同平台進行編譯的時候希望該巨集的值指向不同的值。類似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...