va_list解决c中变参问题
2014-11-22 13:02
141 查看
(1) va_list 是一个字符指针,可以理解为指向当前参数的一个指针,取参必须通过这个指针进行。
(2)在调用参数表之前,应该定义一个 va_list 类型的变量 args;
(3)然后通过va_start对 args 进行初始化,让它指向可变参数表里面的第一个参数,第一个参数是args 本身,第二个参数是在变参表前面紧挨着的一个变量;然后是获取参数,
(4)调用va_arg,它的第一个参数是 args,第二个参数是要获取的参数的指定类型,然后返回这个指定类型的值,并且把 args 的位置指向变参表的下一个变量位置;
(5)获取所有的参数之后,我们有必要用va_end将这个 args 指针关掉,以免发生危险,他是输入的参数 args 置为 NULL。
VA_LIST几个注意问题:
可变参数的类型和个数完全由程序代码控制,它并不能智能地识别不同参数的个数和类型;
(2)在调用参数表之前,应该定义一个 va_list 类型的变量 args;
(3)然后通过va_start对 args 进行初始化,让它指向可变参数表里面的第一个参数,第一个参数是args 本身,第二个参数是在变参表前面紧挨着的一个变量;然后是获取参数,
(4)调用va_arg,它的第一个参数是 args,第二个参数是要获取的参数的指定类型,然后返回这个指定类型的值,并且把 args 的位置指向变参表的下一个变量位置;
(5)获取所有的参数之后,我们有必要用va_end将这个 args 指针关掉,以免发生危险,他是输入的参数 args 置为 NULL。
void evelog1(char const *msg,...) { va_list args; int argno = 0; char *p; va_start(args,msg); while(1) { p = va_arg(args,char*); if(strcmp(p,"")==0) break; printf("argno=%d is:%s\n",argno,p); argno++; } va_end(args); return; }
VA_LIST几个注意问题:
可变参数的类型和个数完全由程序代码控制,它并不能智能地识别不同参数的个数和类型;
相关文章推荐
- 解决变参数问题:va_list、va_start、vsnprintf、va_end的使用方法和实例
- C语言中: va_list 解决变参问题
- VA_LIST 是在C语言中解决变参问题的一组宏
- C中解决变参问题—VA_LIST
- 解决SharePoint中自定义新增和编辑List的页面时"增加附件"工作栏不能使用的问题
- 解决DataGridView绑定List后不能排序的问题
- 苍天啊大地啊,谁能解决这个问题啊(asp.net开发WAP,关于SelectionList和response.redirect)
- 解决Win32 SDK编程添加list control控件程序无法运行的问题
- 有关va_list和vsnprintf输出函数的问题
- 解决IE浏览器li下list-style-type无效的问题
- 有关va_list和vsnprintf输出函数的问题
- 解决DataGridView绑定List后不能排序的问题
- 终于解决了PL SQL DEVELOPER 7.0中的Window List的位置固定的问题(等若干tips)
- Flex中List自己定义itemrenderer渲染问题的解决
- 如何解决List集合类数据源变更UI不能自动刷新的问题
- 解决OM的Price List输入找不到对应库存的ITEMS的问题
- Symbian S60开发,在SettingList中使用RadioButton的问题及解决方法。
- 通用解决方案:解决NHibernate SELECT 多表查询结果List绑定控件显示问题。
- 解决 WinForm 中 TreeView 的 StateImageList 实际显示大小无法改变的问题
- DataRow[]、List<DataRow>无法绑定到GridView的问题解决!