c语言之可变参数
2011-07-05 11:05
274 查看
//arg.h #define ALIGN(n) ( (sizeof(n) + 3) & 0xfffffffc )//内存对齐 #define va_start(ap,v) ( ap = (char *)&v + ALIGN(v) ) //根据第一个参数的首地址和类型以及内存对齐规则确定第一个可变参数的地址 #define va_arg(ap,t) ( *(t *)((ap += ALIGN(t)) - ALIGN(t)) ) //根据第一个可变参数的地址,获取下一个参数的值,并且把可变参数的首地址更新 #define va_end(ap) ( ap = (va_list)0 ) //把可变参数首地址置0,结束可变参数的获取 //para.cpp #include <stdio.h> #include <stdlib.h> #include "arg.h" void myprint(int i,...) { char * dyn_start; va_start(dyn_start,i); printf("hava %d para\n",i); for(int j=0;j<i;j++) { printf("pada %d: %d\n",j+1,va_arg(dyn_start,int));//获取可变参数 } va_end(dyn_start); } int main(void) { myprint(4,10,20,30,40); myprint(3,15,25,35); system("pause"); return 0; }
相关文章推荐
- 【C语言】可变参数列表
- C语言中可变参数函数实现原理
- C语言可变参数
- C语言中的可变参数函数的浅析(以Arm 程序中的printf()函数实现为例)
- C语言中可变参数的用法(转)
- C语言中可变参数的用法
- 可变参数, 它依赖于堆栈----小话c语言(23)
- C语言中可变参数的宏定义
- C语言中如何使用宏 包括单双井号 可变参数
- C语言可变参数列表
- C语言可变参数和格式化输出
- c语言中可变参数的原理---printf()函数
- C语言的本质(18)——函数的可变参数
- C语言中可变参数的用法
- C语言中的可变长参数(转载)
- C语言中可变参数的用法(转载)
- C语言中可变参数函数实现原理浅析
- C语言可变参数全解
- GNU C语言的 扩展(二)零长度数组&可变参数宏
- 再谈C语言可变参数