
No.3ベストアンサー
- 回答日時:
ANSI規格では、mainの中で使う限りにおいては、returnとexitに関しては違いがありません。
関数の中で使った場合、returnはその関数を呼び出した関数に対して値を返すのに対し、exitはそのプログラムを呼び出した他のプログラム(OSや他のプロセス、サービスなど)に対して値を返します。
これらを念頭において使い分ければいいと思います。
私の場合は、exitはmainと各関数でプログラムの仕様上エラーに対処できない場合にプログラムを強制終了したい場所で使います。
それ以外の場所ではreturnを使います。
この回答への補足
とても分かりやすかったです、ありがとうございます。
エラー処理の仕方によって使い分けたらよいということでしょうか?
余談ですが、皆様親切で優劣がつけ難く困ってしまいます、感謝します。もう暫く回答を募らせて頂いて質問を閉じさせて頂くつもりです。
No.5
- 回答日時:
私の場合、main以外の下位関数では、次のように場合わけして組んでいます。
1.エラーで強制終了が必要な場合exitでエラーコードを返してプログラムを終了
2.エラーがその関数内で修復可能であればreturnで正常終了のコードを返す
3.その関数内でエラー処理できないが、呼び出しもとの関数でエラー処理できれば、returnでエラーに対応したエラーコードを返し、上位の関数でエラー処理をする
なるほど、やはりできる限り上位の関数に処理を戻した方がいいということでしょうか。 なかなか本には載っていない価値のあるアドバイスを頂けてうれしいです。
ありがとうございました。
No.4
- 回答日時:
> newで生成したものはexitで終了するとどうなるのでしょうか?
どうにもなりません。これはmain関数からreturnした場合でも同じです。
newで生成したものは、プログラマの責任でdeleteする必要があります。
No.2
- 回答日時:
bool型を使うとのことなのでC++だと判断します。
(C99の可能性もありますが...)exit関数でプログラムを終了させると、自動記憶域に生成したインスタンスのデストラクタが呼ばれません。デストラクタで行っている処理によっては、かなり深刻な不具合になる可能性があります。
できれば例外をスローして、main関数でreturnする方が安全です。
この回答への補足
なるほどデストラクタの件大変参考になりました。
的が外れていたらすみませんが、newで生成したものはexitで終了するとどうなるのでしょうか?
WM_DESTROY等で明示的にdeleteしないとどうなるのでしょうか?
No.1
- 回答日時:
サブルーチン内にEXIT命令を入れるのは避けるべきです。
非常にデバッグしにくくなりますので。
その関数が正常に終了したかどうかをReturn命令で与えてやってメインの方でその数値で処理方式を変更してやるのが通常です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
C言語 exitの使い方
C言語・C++・C#
-
ファイルから読み込んだデータを構造体に格納できますか?
C言語・C++・C#
-
nullと"、\\0とEOFの違いについて。
C言語・C++・C#
-
4
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
5
ソース内の行末に\\
C言語・C++・C#
-
6
C言語 配列の長さの上限
C言語・C++・C#
-
7
C言語でmain関数でのreturnとexit
C言語・C++・C#
-
8
[C言語] NULLは必ず0(番地)ですか?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
.VBSだとADODBのプロバイダが見...
-
5
pythonのopenpyxlについて
-
6
文字列内で括弧を使うには
-
7
インポート時のエラー「データ...
-
8
LaTeXのエラーについて(コンパ...
-
9
0から12までの値nを入力し、n...
-
10
String""から型'Double'への変...
-
11
Filter関数を用いた結果、何も...
-
12
マクロで"#N/A"のエラー行を削...
-
13
ApplicationとWorksheetFunctio...
-
14
「実行時エラー '3167' レコー...
-
15
Vbsエラーダイヤログが表示され...
-
16
日付書式のString型からData型...
-
17
「実行時エラー 9 インデックス...
-
18
エクセルVBA 「On Error GoTo...
-
19
error C2664: 'LPCTSTR' に変換...
-
20
ACCESS2007 VBA 「INSERT INTO...
おすすめ情報
公式facebook
公式twitter