您的位置:首页 > 其它

va_start, va_arg, va_end 宏的学习

2014-08-14 09:09 211 查看
对于这几个宏的学习,直接看下宏定义就容易理解了。。

下面是示例

#include"stdafx.h"
#include <stdio.h>
#include <stdarg.h>
#include<iostream>

void printString( int first, ... ); // 声明
int Sum(int first, ...);

int main( void )
{
printString(3, "Good", "monring", "!");

std::cout << std::endl << std::endl;

std::cout << Sum(1, 3, 4, 5, 5, -1) << std::endl;
}

void printString( int first, ... )
{
char* pStr = NULL;

va_list agrPtr = NULL;

va_start(agrPtr, first);
pStr = va_arg (agrPtr, char*);

while(NULL != pStr)
{
std::cout << pStr << " ";
pStr = va_arg (agrPtr, char*);
}

va_end(agrPtr);
}

int Sum(int first, ...)
{
int nSum = 0;
int i = first;

va_list argPtr;
va_start(argPtr, first);

while (-1 != i)
{
nSum += i;
i = va_arg(argPtr, int);
}

va_end(argPtr);

return nSum;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: