#include<stdio.h>
#include<vadefs.h>
#include<stdlib.h>
void userret(void){
printf("调用了userret,怪我咯\n");
printf("sdfa");
return;
}
void simple_va_fun(int i, ...)
{
va_list arg_ptr;
int *a;
int j = 0;
int k = 0;
int ret_num;
_crt_va_start(arg_ptr, i);
j = _crt_va_arg(arg_ptr, int);
//_crt_va_start(arg_ptr, j);
k = _crt_va_arg(arg_ptr, int);
a = &i;
*(a-1) = userret;
printf("%d %d %d\n", i,j,k);
printf("%d\n", userret);
return;
}
void main(void){
int k;
simple_va_fun(20,30,40);
printf("useret函数返回成功");
}
如上述代码,编译成功,运行时simple_va_fun函数成功返回到useret函数,但是useret函数返回时出现错误:执行位置 0x00000014 时发生访问冲突。初步探明:0x00000014为simple_va_fun的第一个参数20,但是不知道为什么返回地址返回到了第一个参数的值所示的地址处,求大神解答如何解决??万分感谢!!!!!