解決済み

exitとreturnの使い分け

  • すぐに回答を!
  • 質問No.1270220
  • 閲覧数10465
  • ありがとう数93
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 40% (21/52)

通常の開発でexitは使ってもいいのでしょうか?
main以外の関数でbool型でmainに処理を戻しプログラムを終了させるのと、関数内でexitを使い処理を終了させることの違いと具体的にどういう場合に使い分けたらいいのかを教えてください。

できるだけ詳しく教えてもらえるとうれしいです。

質問者が選んだベストアンサー

  • 回答No.3

ベストアンサー率 41% (33/79)

ANSI規格では、mainの中で使う限りにおいては、returnとexitに関しては違いがありません。
関数の中で使った場合、returnはその関数を呼び出した関数に対して値を返すのに対し、exitはそのプログラムを呼び出した他のプログラム(OSや他のプロセス、サービスなど)に対して値を返します。
これらを念頭において使い分ければいいと思います。

私の場合は、exitはmainと各関数でプログラムの仕様上エラーに対処できない場合にプログラムを強制終了したい場所で使います。
それ以外の場所ではreturnを使います。
補足コメント
yruri

お礼率 40% (21/52)

とても分かりやすかったです、ありがとうございます。
エラー処理の仕方によって使い分けたらよいということでしょうか?

余談ですが、皆様親切で優劣がつけ難く困ってしまいます、感謝します。もう暫く回答を募らせて頂いて質問を閉じさせて頂くつもりです。
投稿日時 - 2005-03-15 11:16:01

その他の回答 (全4件)

  • 回答No.5

ベストアンサー率 41% (33/79)

私の場合、main以外の下位関数では、次のように場合わけして組んでいます。

1.エラーで強制終了が必要な場合exitでエラーコードを返してプログラムを終了

2.エラーがその関数内で修復可能であればreturnで正常終了のコードを返す

3.その関数内でエラー処理できないが、呼び出しもとの関数でエラー処理できれば、returnでエラーに対応したエラーコードを返し、上位の関数でエラー処理をする
お礼コメント
yruri

お礼率 40% (21/52)

なるほど、やはりできる限り上位の関数に処理を戻した方がいいということでしょうか。 なかなか本には載っていない価値のあるアドバイスを頂けてうれしいです。
ありがとうございました。
投稿日時 - 2005-03-16 11:08:24
  • 回答No.4

ベストアンサー率 26% (845/3158)

> newで生成したものはexitで終了するとどうなるのでしょうか?

どうにもなりません。これはmain関数からreturnした場合でも同じです。
newで生成したものは、プログラマの責任でdeleteする必要があります。
  • 回答No.2

ベストアンサー率 26% (845/3158)

bool型を使うとのことなのでC++だと判断します。(C99の可能性もありますが...)

exit関数でプログラムを終了させると、自動記憶域に生成したインスタンスのデストラクタが呼ばれません。デストラクタで行っている処理によっては、かなり深刻な不具合になる可能性があります。
できれば例外をスローして、main関数でreturnする方が安全です。
補足コメント
yruri

お礼率 40% (21/52)

なるほどデストラクタの件大変参考になりました。
的が外れていたらすみませんが、newで生成したものはexitで終了するとどうなるのでしょうか?

WM_DESTROY等で明示的にdeleteしないとどうなるのでしょうか?
投稿日時 - 2005-03-15 11:04:27
  • 回答No.1

ベストアンサー率 47% (11786/24626)

サブルーチン内にEXIT命令を入れるのは避けるべきです。
非常にデバッグしにくくなりますので。
その関数が正常に終了したかどうかをReturn命令で与えてやってメインの方でその数値で処理方式を変更してやるのが通常です。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集

ピックアップ

ページ先頭へ