先給個例子
staticvoid
macroscalc(args _args)
}
按照平常的變數計算邏輯,輸出結果應該是
10,9,8,7,6,5
但實際的輸出結果是
9,8,7,6,6,6
這個就有點想不通了,第一句print之前沒有執行defdec,卻自減了,而for迴圈執行了三次defdec,卻只減了一次?
這就是變數和常量的區別了
我們常用的是變數,導致用變數的思維來處理常量
正確的常量macros計算並不是在執行時計算的
很簡單的測試,跟蹤一下這個指令碼就會發現,defdec根本就跟蹤不到,也就是沒有執行
系統對macros的計算處理是在編譯的時候就生成了
也就是說系統在編譯時,見到defdec,就是對#test進行了自減,生成新的常量
再看C C 中的巨集 Macros
通常我們對c c 中巨集的理解不外乎兩點 一,用來處理標頭檔案的重複包含。二,用來定義類似的函式的巨集。define max a,b a b a b 類似於這樣的作法主要是想繞過型別檢查,這樣無論a和b是什麼型別之要能用 運算子來比較的便可以使用巨集來代替反覆寫max函式不同版本。但這樣做明顯有乙個...
和 巨集運算子
代表將標記轉換成字串。如 define a token token a hello 就是 hello 注意,這裡也可以跟字串拼接。如 define a token hello token a world 就是 hello world 即 hello world 代表將兩邊標記連線成乙個標記。如 de...
WebRTC中的關係運算巨集
目錄前言 正文閱讀webrtc原始碼的過程中,我們經常會遇到各種巨集,比較常見的就是運算子巨集。1.巨集 rtc check eq 作用 判斷是否等於。記憶方式 巨集的最後兩個字元 eq equal,相等的意思。2.巨集 rtc check ne 作用 判斷是否不等於。記憶方式 巨集的最後兩個字元 ...