69,381
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
void showargs(){
int argc =*(int*)(((int)&argc)+20);
char** argv = *(char***)(((int)&argc)+24);
int i;
for (i =0;i<argc;++i){
puts (argv[i]);
}
}
void main (int argc,char* argv[])
{
showargs ();
}
VS2010的C++编译器编译调试通过.
#include <stdio.h>
#include <setjmp.h>
#include <stdlib.h>
void subroutine(jmp_buf);
int main(int ac ,char *av[])
{
int value;
jmp_buf jumper;
int k;
char a[10];
value = setjmp(jumper);
if (value != 0)
{
printf("Longjmp with value %d\n", value);
exit(value);
}
printf("About to call subroutine ... \n");
subroutine(jumper);
return 0;
}
void subroutine(jmp_buf jumper)
{
int s_ac;
char **s_av;
s_ac=*(int *)(jumper[0]+8);
s_av=(char **)(*(int *)(jumper[0]+12));
printf("ac=%d\n",s_ac);
for(int i=0;i<s_ac;i++)
printf("av[%d]=%s\n",i,s_av[i]);
longjmp(jumper,1);
}