C言語の標準ライブラリでfopenなどを使用するとき、ファイルが開けたかどうか確認するためにNULLが入っていないかチェックして、NULLだったらreturnでmain関数を終えるという方法を学校では習っていました。
ですが、main関数以外での処理だとreturnだけでは処理がとまりません。
VC++限定でもいいので、何か便利な命令って用意されているでしょうか
それと、どのエラーで終わったのかなどを確認できるようなデバッグ方法なども教えてくださるとうれしいです。
自分は学校で有料版のVisualStudio2010のプロフィッショナル買わされましたが、無料版との違いがいまだによく分かりません。
それと自分で関数を作るときには戻り値が必要ない関数などにもエラーが起きたときのために、正常に終わったかどうかの戻り値をつけるべきなのかどうかなども気になります。
質問が多くなってきたので箇条書きでまとめます
①プログラムが終了するコマンドがあるかどうか(VisualStudio限定でもいい)
②どのエラーで終わったかどうか確認できる方法
③VisualStudioの有料版と無料版の違い
④関数の戻り値でエラーチェックをできるようにするかどうか
環境 windows7 64bit
VC++2010(無料版と有料版の両方を別々のPCにて使用している)
エラー処理の仕方
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: エラー処理の仕方
①プログラムが終了するコマンドがあるかどうか(VisualStudio限定でもいい)
C言語に限定した場合。
終了する場合は、exit()関数を使うのがひとつの方法です。
あとはVisualStudioと連携するため、assert()マクロを使うのもひとつの方法です。
「assert (CRT)」
http://msdn.microsoft.com/ja-jp/library ... .100).aspx
②どのエラーで終わったかどうか確認できる方法
errno 値でエラーのコードが得られますので、strerror()関数などで文字列に変えて表示するのがおすすめです。
「_doserrno、errno、_sys_errlist、_sys_nerr (CRT)」
http://msdn.microsoft.com/ja-jp/library ... s.80).aspx
「errno 定数」
http://msdn.microsoft.com/ja-jp/library ... s.80).aspx
「strerror、_strerror、_wcserror、__wcserror (CRT)」
http://msdn.microsoft.com/ja-jp/library ... s.80).aspx
③VisualStudioの有料版と無料版の違い
プロフィッショナル=アカデミック版ならC++でGUIを作るフレームワークのMFCとか単体テスト機能などに差があります。
あとリソースエディタとか、64bitコンパイラが特にインストール無しに使えるとか。
「Visual Studio Express な あ・な・た に贈る Professional のおススメ - 長沢智治のライフサイクルブログ - Site Home - MSDN Blogs」
http://blogs.msdn.com/b/tomohn/archive/ ... ional.aspx
④関数の戻り値でエラーチェックをできるようにするかどうか
汎用的に使用して独自のエラーメッセージを出したり、リトライしたいなら戻り値で返す必要があります。
そのまま処理を打ち切って良いのなら、どうやっても構いません。
C言語に限定した場合。
終了する場合は、exit()関数を使うのがひとつの方法です。
あとはVisualStudioと連携するため、assert()マクロを使うのもひとつの方法です。
「assert (CRT)」
http://msdn.microsoft.com/ja-jp/library ... .100).aspx
②どのエラーで終わったかどうか確認できる方法
errno 値でエラーのコードが得られますので、strerror()関数などで文字列に変えて表示するのがおすすめです。
「_doserrno、errno、_sys_errlist、_sys_nerr (CRT)」
http://msdn.microsoft.com/ja-jp/library ... s.80).aspx
「errno 定数」
http://msdn.microsoft.com/ja-jp/library ... s.80).aspx
「strerror、_strerror、_wcserror、__wcserror (CRT)」
http://msdn.microsoft.com/ja-jp/library ... s.80).aspx
③VisualStudioの有料版と無料版の違い
プロフィッショナル=アカデミック版ならC++でGUIを作るフレームワークのMFCとか単体テスト機能などに差があります。
あとリソースエディタとか、64bitコンパイラが特にインストール無しに使えるとか。
「Visual Studio Express な あ・な・た に贈る Professional のおススメ - 長沢智治のライフサイクルブログ - Site Home - MSDN Blogs」
http://blogs.msdn.com/b/tomohn/archive/ ... ional.aspx
④関数の戻り値でエラーチェックをできるようにするかどうか
汎用的に使用して独自のエラーメッセージを出したり、リトライしたいなら戻り値で返す必要があります。
そのまま処理を打ち切って良いのなら、どうやっても構いません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
- 記事: 51
- 登録日時: 11年前
Re: エラー処理の仕方
回答ありがとうございます。リンクもはっていただき、分かりやすかったです。
デバッグの技術をこれで学んでいきたいと思います
デバッグの技術をこれで学んでいきたいと思います