0
我试图使用setjmp/longjmp
错误处理,但是,调用longjmp导致程序退出时使用MSVC 2010编译代码0,在这里是完整的邮件:呼叫longjmp导致程序退出与代码0 msvc 2010
The program '[5020] test.exe: Native' has exited with code 0 (0x0).
这里是代码:
#include <setjmp.h>
#include <stdio.h>
int main(void)
{
jmp_buf env;
switch(setjmp(env))
{
case 0:
printf("normal operation\n");
longjmp(env, -2);
break;
case -1:
printf("known error\n");
break;
default:
printf("Unknown error!\n");
break;
}
return 0;
}
我编译使用后就正常了一个基于GNU编译器(在Cygwin下BFIN精灵-GCC)相同的代码。即,
$ make
bfin-elf-gcc -c -Wall main.c -mcpu=bf533-any -o main.o
bfin-elf-gcc main.o -mcpu=bf533-any -msim -o bfin_test
$ bfin-elf-run.exe bfin_test
normal operation
Unknown error!
任何想法,为什么它不工作在msvc上?
非常感谢提前, 哈桑。
我可以通过在return 0之前有另一个printf语句来验证它是否工作正常;并有一个断点。造成我的困惑的原因是,由于某种原因,放置在默认情况下的断点没有被打(尽管“未知错误”被打印)。谢谢您的帮助 – has981 2013-05-06 10:28:05