C++省略号类型和参数个数不确定函数参数范例

声明:所有权利保留。

转载必须说明出处:http://blog.csdn.net/cartzhang/article/details/44203651

今天想写个宏定义,发现宏定义里也可以写不定参数,但是我的宏最终没有用。

因为我觉得写完,这个不定参数给我带来的麻烦,比好处好想多。

因此我就定义了两个宏,用一个宏定义另一个。

把今天这个c++的类型不确定和参数个数不确定的用法先记下来。以备后用啊。

直接代码:

#include<cstdarg> // 必备头文件
#include<iostream>
using namespace std;

typedef enum POSITION_TRACKING_STATE
{
	NA = 11,
	NB,
	NC
} TRACKING_STATE;

int Test(TRACKING_STATE state, ...)
{
	va_list arg_ptr;
	int sum = 0;
	int nArgValue;
	sum += state;

	va_start(arg_ptr, state);
	do
	{
		nArgValue = va_arg(arg_ptr, TRACKING_STATE);
		sum += nArgValue;
		//自定义结束条件是输入参数为0
	} while (nArgValue != NULL);
	va_end(arg_ptr);

	return sum;
}

int main()
{
	cout << Test(NA, NB, NC, NULL) << endl;  //必须以NULL 或0 结尾,因为参数列表结束的判断条件是读到0停止
	return -1;
}

参考各个网页。

非常感谢各位。

-----------------

若有问题,请随时联系!

再次致谢!

时间: 2024-12-18 03:15:49

C++省略号类型和参数个数不确定函数参数范例的相关文章

【转载】C语言 构建参数个数不固定函数

深入浅出可变参数函数的使用技巧本文主要介绍可变参数的函数使用,然后分析它的原理,程序员自己如何对它们实现和封装,最后是可能会出现的问题和避免措施. VA函数(variable argument function),参数个数可变函数,又称可变参数函数.C/C++编程中,系统提供给编程人员的va函数很少.*printf()/*scanf()系列函数,用于输入输出时格式化字符串:exec*()系列函数,用于在程序中执行外部文件(main(int argc,char*argv[]算不算呢,与其说main

C中参数个数可变的函数

一.什么是可变参数 我们在C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点"-"做参数占位符),实际调用时可以有以下的形式: printf("%d",i); printf("%s",s); printf("the number is %d ,s

JavaScript参数个数可变的函数

题外话:很早就接触了JavaScript,但是没有留意它,看到很多很酷.很炫的网页,都有JavaScript的身影,Google在JavaScript的应用对我的影响最大了.我决心从头开始学习它,所以有了JavaScript & Ajax这个分栏.我打算把这个分栏作为学习笔记记录下来,因此每篇文章笔记可能很简短,一两句话注解而已. JavaScript允许一个函数传递个数可变的参数,因为有arguments这个内置对象,它一个函数传递的所有参数的数组.举个例子,就明白了. 可以精心开发5年的UI

Javascript参数个数可变的函数 动态传人和取得参数

js中的函数是一个对象,一个Function对象(函数参数列表及函数主体事实上只是Function对象的构造函数的参数而已),跟其他对象一 样可以在运行时增加属性.删除属性,函数参数是可变的,比如定义函数时定义的参数列表只有3个参数,调用时你却可以只传2个参数,或超过3个参数,通过函 数对象的length属性可以得到函数定义的形参个数,而函数调用时的实际参数列表则可以通过函数的arguments属性(一个Arguments对 象,类似于数组)访问到,arguments.length就是实际参数的

参数个数可变的函数

使用va_start(),va_arg(),va_end(),操作了可变元 定义如下: #include<stdarg.h> type va_arg(va_list argptr,type); void va_start(va_list argptr,last_parm); void va_end(va_list argptr); 用法: 1 #include<stdio.h> 2 #include<stdarg.h> 3 4 double sum_series(int

php中函数不确定参数个数时获取所有参数

func_get_arg(),func_get_args()和func_num_args()的用法 这三个函数呢,都是以func_打头的,顾名思义,是跟php的函数有关的.我们在写类的时候也经常用到这几个函数:注意,这三个函数只能用在函数内部:否则会报错: $number = func_num_args(); 返回INT //返回函数调用时,给出参数的数量: $para = func_get_arg(n); //可以返回第N-1位参数的值,因为引索的起始是0 $arr = func_get_ar

在C/Objc中 写一个参数个数可变的函数示例

////  main.c//  UncertainParametersAndParameterSentinel////  Created by llc on 15/2/12.//  Copyright (c) 2015年 llc. All rights reserved.// #include <stdio.h>#include <stdarg.h> int addemUp(int firstNum,...);void printStrings(char * first,...)

C++ (带有默认参数的函数参数)缺省函数参数

缺省参数?在C++中,允许实参的个数与形参的个数不同.在声明函数原型时,为一个或者多个形参指定默认值,以后调用这个函数时,若省略某一个实参,c++则自动的以默认值作为相应参数的值. 实列说明:#include<iostream>using namespace std; int add(int x=4,int y=7){ return x+y;}int main(){ cout<<add(3,6)<<endl; cout<<add(3)<<endl

C/C++ 使用宏在编译期计算可变参数个数

参考https://groups.google.com/forum/#!forum/comp.std.c/d-6Mj5Lko_s 同时参考了cppformat源代码 C++是不提倡可变参数,理由不说了.但是类似printf的函数族使用起来确实很方便,我在查找printf的替代方案时无意间看到的.感慨下,微软的CString::Format确实很好用 cppformat提供类似printf的功能,但是又是类型安全的,其核心是利用C++强大的模版功能.在实现上,cppformat实现了在编译期计算可