エラー処理に使用しようとしてsetjmp/longjmp
いますが、MSVC 2010 を使用してコンパイルすると、longjmp を呼び出すと、プログラムがコード 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) を使用して同じコードをコンパイルしましたが、問題なく動作しました。すなわち、
$ 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で動作しない理由はありますか?
ハサン、よろしくお願いします。