我正在尝试使用setjmp/longjmp
错误处理,但是,对 longjmp 的调用导致程序在使用 MSVC 2010 编译时以代码 0 退出,这是完整的消息:
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-elf-gcc)编译了相同的代码,效果很好。IE,
$ 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 上运行吗?
非常感谢,哈桑。