#include <stdarg.h>
#define VNAME(name) (#name)
#define Assert(name) do { \
if(NULL == name){ \
g_printerr("#error: %s is null.\n",VNAME(name)); \
return -1; \
} \
}while(0)
int CheckPointer(char *arg,...)
{
va_list argp; /* 定义保存函数参数的结构 */
int argno = 0; /* 纪录参数个数 */
char *para = arg; /* 存放取出的字符串参数 */
va_start(argp,arg); /* argp指向传入的第一个可选参数, msg是最后一个确定的参数 */
do
{
printf("#Parameter %d is %x \n",argno,para);
Assert(para);
para = va_arg( argp, char *); /* 取出当前的参数,类型为char *. */
argno++;
}while (para);
va_end( argp); /* 将argp置为NULL */
return 0;
}
int main()
{
char *pipeline = NULL;
char *source = NULL, *sink = NULL;
char *filter = NULL;
char *videoscale = NULL;
printf("%x,%x,%x,%x \n",source,pipeline,sink,filter);
CheckPointer(source,pipeline,sink,filter,NULL);
\\\ ...
}
va_list可变参数和判断
最新推荐文章于 2023-10-26 17:49:37 发布