关于va_list的_INTSIZEOF(n)的疑问。
以下是在网上查得:
在VC++6.0的include有一个stdarg.h头文件,有如下几个宏定义:
#define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )
这个_INTSIZEOF(n)是想获得n的大小,那么直接sizeof就可以,为什么弄得这么复杂?
不过我做了实验,(x+y)&~y,如果x从4开始,依次为8,16,32.....等,y每隔4个数,(x+y)&~y做完运算的结果和x就一样。
有高手知道为什么这么做吗?