C语言中解决变参问题的几个宏
来源:互联网 发布:c语言重点知识总结 编辑:程序博客网 时间:2024/05/20 03:05
#include <stdio.h>
#include <stdarg.h>
int demo(char* msg,...)
{
va_list argp;
int argno = 0;
int para;
va_start(argp,msg);
do{
para = va_arg(argp,int);
printf("Parameter #%d is:%d\n",argno,para);
argno++;
}while(para != 0);
va_end(argp);
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
demo("DEMO",5,4,3,2,0);
system("pause");
}
VA_LIST的用法:
(1)首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针;
(2)然后用VA_START宏初始化变量刚定义的VA_LIST变量;
(3)然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型(如果函数有多个可变参数的,依次调用VA_ARG获取各个参数);
(4)最后用VA_END宏结束可变参数的获取。
使用VA_LIST应该注意的问题:
(1)可变参数的类型和个数完全由程序代码控制,它并不能智能地识别不同参数的个数和类型;
(2)如果我们不需要一一详解每个参数,只需要将可变列表拷贝至某个缓冲,可用vsprintf函数;
(3)因为编译器对可变参数的函数的原型检查不够严格,对编程查错不利.不利于我们写出高质量的代码;
小结:可变参数的函数原理其实很简单,而VA系列是以宏定义来定义的,实现跟堆栈相关。我们写一个可变参数的C函数时,有利也有弊,所 以在不必要的场合,我们无需用到可变参数,如果在C++里,我们应该利用C++多态性来实现可变参数的功能,尽量避免用C语言的方式来实现。
vsprintf
- C语言中解决变参问题的几个宏
- VA_LIST 是在C语言中解决变参问题的一组宏
- C语言中: va_list 解决变参问题
- C语言变参问题
- C语言的变参
- C语言中几个关于初值的问题
- C语言函数变参问题
- C语言的变参技术,va_start,va_arg,va_end这几个函数怎么用?
- c语言变参
- C语言的变参的研究
- 碰见C语言的几个小问题
- C语言的几个有趣问题
- C语言几个有意思的问题
- C语言的变参函数设计
- C语言的变参技术-va_arg
- C语言的变参函数设计
- C语言的变参技术-va_arg
- C语言的变参函数设计
- SQL对应Java数据类型
- myeclipse jdbc连接mysql数据库
- CSS教程
- wince6 应用程序杀掉其他进程
- 面试感想之二
- C语言中解决变参问题的几个宏
- 每人都有两大炸弹的扎金花2012
- 嵌入式linux学习笔记之入门知识
- 关于宽字符(_UNICODE||UNICODE)和windows套接(socket)字编程问题
- 修改js Date对象添加年月日
- Socket通信(续)
- 去除织梦后台的赞助商广告
- 第三章 控制程序流程
- 遗传算法GA笔记之简述