最近我看了有人实现自己的printf使用宏_bnd(x,bnd),但我不明白宏的意思是什么。
#define _bnd(x, bnd) (sizeof(x) + (bnd) & ~(bnd))
我知道按位运算符和sizeof()
答案 0 :(得分:0)
这是内部实现的魔力,依赖于实现 变量参数的参数地址的属性 功能
除非你需要知道这一切意味着什么,否则最好 远离它。否则它可能诱惑你依赖它。
你的宏应该是
#define _bnd(X, bnd) (sizeof(X) + (bnd) & ~(bnd))
^
check in your post
你也可以通过扩展基本的算术运算来了解。为此你应该知道sizeof()和tilde operator以及bitwise operatior。