标签:double 使用 ret va_end 代码 print art 类型 mat
比如对于printf()函数,其参数就是可变的:int printf( const char* format, ...);
在函数内部我们使用va_start、va_arg、va_end这几个宏来获取实参,示例代码如下:
#include <cstdio> #include <iostream> #include <cstdarg> using namespace std; void TestFun(int i, ...) { va_list ap; va_start(ap, i); int j = va_arg(ap, int); double k = va_arg(ap, double); char*p = va_arg(ap, char*); va_end(ap); printf("%d, %d, %lf, %s\n", i, j, k, p); } int main() { TestFun(1, 2, 3.0, "abc"); return 0; }
va_start的第二个参数指定从哪个参数开始获取(不包括该参数)。
va_arg用来获得实参,第二个参数指定实参的类型,va_arg是顺序获得一个实参,调用一次只能获得一个参数。
va_end指明结束。
标签:double 使用 ret va_end 代码 print art 类型 mat
原文地址:http://www.cnblogs.com/milanleon/p/7449775.html