一、巨集替換
1.巨集展開的順序:
先由外層向內層檢查,直至最內層後依次向外層展開。例外:遇到「#」開頭的巨集就不再往內檢查,從該層開始往外展開。
2.重新掃瞄和替換
在替換列表中的所有引數替換過之後,預處理器將對結果token序列重新掃瞄以便對其中的巨集再次替換。當正在替換的巨集在其替換列表中發現自身時,就不再對其進行替換;在任何正在巢狀替換的巨集的替換過程中遇到正被替換的巨集就對其不再進行替換(防止遞迴)。
二、一些用法
1、」#」與「##」
##操作符的作用是在替代表中將其前後的引數連線成為乙個預處理符號(連字元),不能出現於巨集替代表的開端和末尾。
#操作符的作用是在替代表中將其後的引數直接替換。
關於巨集定義
發現release版本是沒有上面的這些巨集定義,所以準備去unity的playersettings去設定看看,我加了乙個ttt的巨集定義,發現結果還是這樣,如圖下 發現了debug模式下是有這些亂七八糟的巨集定義的,但是release模型下是沒有的,怎麼辦呢?我準備修改這個檔案試試把debug有的巨...
關於巨集定義函式
擷取部分內容 使用帶引數的巨集定義可完成函式呼叫的功能,又能減少 系統開銷,提高執行效率。正如c語言中所講,函式的使用可以使程式更加模組化,便於組織,而且可重複利用,但在發生函式呼叫時,需要保留呼叫函式的現場,以便子 函式執行結束後能返回繼續執行,同樣在子函式執行完後要恢復呼叫函式的現場,這都需要一...
關於巨集定義 x y
最近看原始碼的時候發現了乙個這個巨集定義 difine oppconcat1 x,y x y。表示一臉懵逼,查詢之後發現,是乙個變數名連線的用法,x y表示的就是xy這個變數。注意是名字連線,不是變數數值的連線。舉個栗子 include using namespace std define test...