va-list、va-start、va-arg、va-end宏的使用
摘要:当你的函数的参数个数不确定时,就可以使用上述宏进行动态处理,这无疑为你的程序增加了灵活性。Example:CStringAppendString(CStringstr1,...)//一个连接字符串的函数,参数个数可以动态变化{LPCTSTRstr=str1;//str需为指针类型,因为va_arg宏返回的是你的参数的指针,但是如果你的参数为int等简单类型,则不必为指针,因为变量名实际上即是指针。CStringres;va_listmarker;//你的类型链表va_start(marker,str1);//初始化你的marker链表while(str!="ListEnd")//ListEnd:参数的结束标志,十分重要,在实际中需自行指定{res+=str;str=va_arg(marker,CString);//取得下一个指针}va_end(marker);//结束,与va_start合用returnres;}intmain(){CStringstr=AppendString("xu","zhi","hong","ListEnd");cout<<str.GetBuffer(str.GetLength())<<endl;return0;}输出xuzhihongCStringAppendString(CStringstr1,...),因为连接字符串的参数可以动态变化,你不知用户要进行连接的字符串个数是多少,所以你可以用…来代替。但是要注意的是你的函数要有一个参数作为标志来表示结束,否则会出错。在上例中用ListEnd作为结束符。还有va_arg返回的是你参
温馨提示:当前文档最多只能预览
5 页,若文档总页数超出了
5 页,请下载原文档以浏览全部内容。
本文档由 匿名用户 于 2022-10-30 23:18:59上传分享