ページ 11

エラー終了するにはどうすればいいですか?

Posted: 2007年10月04日(木) 23:44
by ウババア
c言語でゲームを作っているのですが
スタート画面の処理、ゲーム画面の処理をswitchでわけたとき、どうやってエラーのとき終了すればいいのかわかりません
while(1){
switch ( g_FrameNo ) {
        case START:
                Start();
        break;
        case GAME:
                Game();
        break;
}
}
Game()の戻り値が1だったらエラーで終了しようとして
while(1){
switch ( g_FrameNo ) {
        case START:
                Start();
        break;
        case GAME:
                if ( Game() != 0 ) return 1;
        break;
}
}
こうやればいいのかとおもったのですがswitch関数を抜けるだけで終わってしまいます
なにかいい方法ないでしょうか?

Re:エラー終了するにはどうすればいいですか?

Posted: 2007年10月05日(金) 01:08
by 管理人
return 文を書くとそこで関数が終了します。
よって条件文を抜けるだけにはなりません。

returnを書く事でswitch文を抜けるのなら一番下の文字が出力されるはずです。
実行してみてください。
#include <stdio.h>

int main(){
	switch(1){
		case 1:
			if(1!=0){
				printf("エラーreturn");
				return 0;
			}
			break;
	}
	printf("ここは出力されない");
	return 0;
}

Re:エラー終了するにはどうすればいいですか?

Posted: 2007年10月05日(金) 17:03
by ウババア
おお!returnでmain関数を抜けることってできるんですね
よく見たら違うところでミスしてました
ありがとうございました

Re:エラー終了するにはどうすればいいですか?

Posted: 2007年10月05日(金) 21:28
by tk-xleader
異常終了ならば、標準ライブラリ関数のabout()関数を使うことも可能ですよ。

Re:エラー終了するにはどうすればいいですか?

Posted: 2007年10月05日(金) 23:27
by 管理人
もしDXライブラリでゲームを作成されているのでしたら、
DxLib_End() ;を通して終了した方がよさそうです。

DX_exit(int);

とでも関数をつくり、intにエラー番号を渡してから終了させれば管理もしやすくなるでしょう。