#define _offsetof(t,m) ((int)((caddr_t)&((t*)0)->m))
這個巨集是得到結構體t中的t->m偏移量
caddr_t定義:
#define char* caddr_t
現將0強制轉換t*型別然後求址訪問m.再轉換成caddr_t型別的指標,再強轉為int型別得到偏移量
#define roudup(a) (1+(((a)-1)|(sizeof(long)-1)))
該巨集將a向上捨入為long型別,
也就是說將a+乙個數變成可以整出sizeof(long)型別的整數
原理就是如果這個數化為二進位制數最後兩位為00的所有數都可以整除4,roudup就是進行了這樣的操作
C C 幾個預定義的巨集
一邊情況下,c c 編譯器會內建幾個巨集,這些巨集定義不僅可以幫助我們完成跨平台的原始碼編寫,靈活使用也可以巧妙地幫我們輸出非常有用的除錯資訊。ansi c標準中有幾個標準預定義巨集 也是常用的 編譯器在進行原始碼編譯的時候,會自動將這些巨集替換為相應內容。下面的 不僅展示了各個預定義巨集的使用,還...
keil mdk 中巨集定義
一般巨集定義只有在包含其定義檔案的檔案中才起作用,但是可以通過新增.opt檔案,在裡面定義對整個工程起作用的巨集。注意事項 1.檔案型別選擇text document file 2.在misc control中新增相應的編譯控制,以test.opt為例,新增 via test.opt 這裡包含有對檔...
巨集定義中的
劉詩慧rubby的日誌 1 stringizing 字串化操作符 作用 將巨集定義中的傳入引數名轉換成用一對雙引號括起來引數名字串。其只能用於有傳入引數的巨集定 義中,且必須置於巨集定義體中的引數名前。如 define example instr printf the input string is...