關於巨集定義 x y

2021-09-29 07:52:03 字數 391 閱讀 7391

最近看原始碼的時候發現了乙個這個巨集定義:#difine  __oppconcat1(x,y) x##y。表示一臉懵逼,查詢之後發現,是乙個變數名連線的用法,x##y表示的就是xy這個變數。注意是名字連線,不是變數數值的連線。舉個栗子:

#include using namespace std;

#define test(x, y) x##y

int main()

{ int x, y, xy;

x = 2, y=5, xy = 34;

cout 《巨集定義在編譯開始之前就是進行替換,所以如果引數 xy 沒有定義,則編譯會報錯;如果是兩個數值,則會直接輸出連線之後的數值,但是數值無法作為引數去傳遞給這個函式

關於巨集定義

一 巨集替換 1.巨集展開的順序 先由外層向內層檢查,直至最內層後依次向外層展開。例外 遇到 開頭的巨集就不再往內檢查,從該層開始往外展開。2.重新掃瞄和替換 在替換列表中的所有引數替換過之後,預處理器將對結果token序列重新掃瞄以便對其中的巨集再次替換。當正在替換的巨集在其替換列表中發現自身時,...

關於巨集定義

發現release版本是沒有上面的這些巨集定義,所以準備去unity的playersettings去設定看看,我加了乙個ttt的巨集定義,發現結果還是這樣,如圖下 發現了debug模式下是有這些亂七八糟的巨集定義的,但是release模型下是沒有的,怎麼辦呢?我準備修改這個檔案試試把debug有的巨...

關於巨集定義函式

擷取部分內容 使用帶引數的巨集定義可完成函式呼叫的功能,又能減少 系統開銷,提高執行效率。正如c語言中所講,函式的使用可以使程式更加模組化,便於組織,而且可重複利用,但在發生函式呼叫時,需要保留呼叫函式的現場,以便子 函式執行結束後能返回繼續執行,同樣在子函式執行完後要恢復呼叫函式的現場,這都需要一...