C++ 多参函数的实现方式

来源:互联网 发布:尊重网络主权 编辑:程序博客网 时间:2024/05/21 10:35
#include "stdafx.h"#include <stdio.h>#include <stdarg.h>/*多参函数的实现: 像 printf 这种多参函数, 是借用 stdarg.h 中的宏实现的.va_list:用于遍历参数列表的指针va_start:让指针指向第一个参数va_arg:获取下一个参数,并向后移动一个位置va_end:释放指针,完成遍历*/int sum(int n1, ...){int out = n1;/* 定义一个指向参数列表的指针, 必须是 va_list 类型 */va_list p;/* 把指针指向最后一个明确的变量 */va_start(p, n1);/* 用 va_arg 获取下一个整数值, va_arg 会同时把指针向后移动整数大小的位置 *//* 本例是假定参数都是整数值, 遇 0 终止; 这样在使用是最后一个参数必须是 0 */while ((n1=va_arg(p,int)) != 0)out += n1;va_end(p);return out;}static const int kMaxLogLen = 16*1024;void OGLogger(const char* format, ...){char buffer[kMaxLogLen] = {0};va_list p;va_start(p, format);vsprintf(buffer, format, p);va_end(p);printf("%s", buffer);//CCLog("%s", buffer);}int _tmain(int argc, _TCHAR* argv[]){printf("%d\n", sum(2,2,2,2,2,2));OGLogger("This is for test = %d \n", 60);return 0;}



对于下面的输出函数的使用,我们可以对其进行输出控制,常用语日志控制输出使用。


0 0
原创粉丝点击