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