va_start, va_arg, va_end 宏的学习

来源:互联网 发布:linux 文件打包保留 编辑:程序博客网 时间:2024/06/05 02:06


对于这几个宏的学习,直接看下宏定义就容易理解了。。

下面是示例


#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;}

0 0
原创粉丝点击