需要用C到标准库的va_list类型和va_start、va_arg、va_end宏 改成: 需要用到C标准库的va_list类型和va_start、va_arg、va_end宏 :-)
谢谢指出!
在stdarg.h的简单实现中,我觉得va_start的实现是不是有点问题? 程序中用va_start(ap,format);来调用这个宏,带入以后展开就成如下: ap=(char *)& format + 4; 问题是: format已经是指针,它指向第一个参数, &format就是指向format这个指针的指针。 如果把(&format)加4,这个指针还是指向第二个参数吗? 这个宏定义是不是需要把&去掉才合理?多谢指教!
第一个参数是指针类型的,所以“format就是第一个参数”,而不是“format指向第一个参数”
文中例24.10里面写到得宏: #define _Bnd(X, bnd) (sizeof (X) + (bnd) & ~(bnd)) (bnd) & ~(bnd)这不是等于零了吗? 应该是先加再与吧,((sizeof (X) + (bnd)) & ~(bnd))
回去复习运算符的优先级
如果您有建设性意见,哪怕只是纠正一个错别字,也请不吝赐教,您留下的姓名和email将会出现在本书前言的致谢中。再次感谢您的宝贵意见!