-
如何解决if(a+b<0)的溢出问题?>本来不想用逻辑运算符的,结果没想出来,只有折个中了
if (b == INT_MIN || a < -b)
- static是解决名字冲突的利器。
- 反复地检查边界条件,这是个好习惯。
- 为什么va_arg(ap, type)的type不能是char、short或float?
离开以后 » 日志 » C Traps and Pitfalls笔记
C Traps and Pitfalls笔记
yayj 发表于 2005-10-23 20:33:22
Koeing在讲这个宏时是直接使用type的长度来调整ap指针的,而栈是按4字节对齐的, 则char和 short类型的参数是转成int,float转成double来压入堆栈,所以当使用这几个类型时,va_arg调整ap指针时就会出错。但现在的 stdarg.h中可以使用__va_size(type)宏来计算对齐后的字节数,所以还是可以使用这些类型。不过gcc会对这个用法给出警告,并在 va_arg宏处设置一个int 指令,暂时还没想到gcc为什么会这么做。
相关日志:
收藏:
QQ书签
del.icio.us
订阅:
Google
抓虾
