69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdarg.h>
void simple_va_fun(int i, ...)
{
//char *arg_ptr;
va_list arg_ptr;
int j=0,k=0;
va_start(arg_ptr, i);
//arg_ptr = (char*)&i;
//arg_ptr =arg_ptr + sizeof(i);
j=va_arg(arg_ptr, int);
//j = *(int*)arg_ptr;
//arg_ptr += sizeof( *(int*)arg_ptr);
k=va_arg(arg_ptr, int);
va_end(arg_ptr);
//arg_ptr = 0;
printf("%d %d %d\n", i, j, k);
return;
}
int main()
{
simple_va_fun(100,200,300);
}
#define va_list my_va_list
#define my_va_list char*
#define va_start my_va_start
#define va_arg my_va_arg
#define va_end my_va_end
#define my_va_start(ap,v) ap = (char*)&v;ap = ap + sizeof(v);
#define my_va_arg(ap,t) *(t*)ap;ap += sizeof( *(t*)ap);
#define my_va_end(ap) ap = 0
int main()
{
simple_va_fun(100,200);//这样你的程序就有误
//你的程序应该要实现有几个参数则输出几个 而不是定为3
}
#define my_va_list char*
#define va_start my_va_start
#define va_arg my_va_arg
#define va_end my_va_end
#define my_va_start(ap,v) ap = (char*)&i;arg_ptr = arg_ptr + sizeof(v);
#define my_va_arg(ap,t) *(t*)arg_ptr;arg_ptr += sizeof( *(int*)arg_ptr);
#define my_va_end(ap) ap = 0