>第 24 章 函数接口>可变参数

况海斌 khb.hnu@gmail.com
2009-09-06 14:43:06

需要用C到标准库的va_list类型和va_start、va_arg、va_end宏

改成:
需要用到C标准库的va_list类型和va_start、va_arg、va_end宏
:-)


宋劲杉 songjinshan@gmail.com
2009-09-24 21:56:29

谢谢指出!


cleansky cleanskyjojo@163.com
2009-11-03 14:47:53

在stdarg.h的简单实现中,我觉得va_start的实现是不是有点问题?
程序中用va_start(ap,format);来调用这个宏,带入以后展开就成如下:
ap=(char *)& format + 4; 
问题是: format已经是指针,它指向第一个参数, &format就是指向format这个指针的指针。
如果把(&format)加4,这个指针还是指向第二个参数吗?
这个宏定义是不是需要把&去掉才合理?多谢指教!


宋劲杉 songjinshan@akaedu.org
2010-01-21 16:02:45

第一个参数是指针类型的,所以“format就是第一个参数”,而不是“format指向第一个参数”


captain_black callmeblack@126.com
2010-01-28 09:44:49

文中例24.10里面写到得宏:
#define _Bnd(X, bnd) (sizeof (X) + (bnd) & ~(bnd))

(bnd) & ~(bnd)这不是等于零了吗?
应该是先加再与吧,((sizeof (X) + (bnd)) & ~(bnd))


宋劲杉 songjinshan@gmail.com
2010-02-27 22:06:58

回去复习运算符的优先级


如果您有建设性意见,哪怕只是纠正一个错别字,也请不吝赐教,您留下的姓名和email将会出现在本书前言的致谢中。再次感谢您的宝贵意见!