调用函数的返回地址的计算
#include "stdio.h"
void fun1()
{
printf("this is fun1!");
}
void fun2()
{
printf("this is fun2!");
}
void main()
{
int *ret;
fun2();
ret=(int*)(&ret+2);//这句取得fun2()的返回值地址,我不明白为什么是加2,在linux下
//应该是-4的。
*ret=&fun1;
}
问题是关于压栈顺序,是不是windows和Linux不同呢?大家可以交流一下