2014-04-14 104 views
0

最近我讀了一個人實現他自己的printf使用宏_bnd(x,bnd),但我不明白宏的意思是什麼。宏_bnd(X,bnd)是什麼意思?

#define _bnd(x, bnd) (sizeof(x) + (bnd) & ~(bnd)) 

我知道位運算符和的sizeof()

+2

不應該是'sizeof(x)'? (請注意情況)。 – Bathsheba

+0

我認爲它會檢查sizeof(x),並將該值存儲在一個長度爲BND的數字中。這可能是一個字節,整型,短整型,長整型,雙等等 – eventHandler

+0

是的,它是sizeof(x),我拼錯它 – Zik

回答

0

它的內部實現的魔法,與實施相關的參數可變參數 函數的地址的 性能發揮。

除非你需要知道這一切是什麼意思,可能最好 遠離它。否則,它可能會誘使你依靠它。

而且宏應該是

#define _bnd(X, bnd) (sizeof(X) + (bnd) & ~(bnd)) 
      ^
      check in your post 

您也可以通過只擴大基本arrithmetic operation.For這個你應該知道sizeof()tilde operatorbitwise operatior知道。