Category Archives

Home >例外のないC++

例外のないC++

スポンサーサイト
...
--------
errno・コールバック関数・フックルーチンは例外の代わりになるか
最後は全部まとめて考察してみることにします。まずは、errnoまたはそれに変わるような静的オブジェクトからです。この類のエラー通知方法の問題点としては、主に以下のようなものがあります。返却値以上に、エラーが無視されやすい。マルチタスク環境で問題がある。逆に、利点としては、コンストラクタや多重定義された演算子でも使えるという点が挙げられます。しかし、メリットに比べて、問題点が重大で、特に、マルチタスク環......
2006-05-08 | Comment : 3  | Trackback : 0 
要因コードは例外の代わりになるか
返却値、または引数として参照渡し(ポインタでもよい)変数を使って、例外の要因コードを呼び出し元に返す方法は、C言語では最も一般的です。仮に例外処理を使う場合でも、高速に処理する必要がある場合や、割と普通に発生する事象に対応するには、やはりこの方法を用いることになると思います。ところが、この方法にもいくつかの弱点があります。ざっと列挙してみると、コンストラクタや多重定義された演算子では返却値を返せな......
2006-04-24 | Comment : 0  | Trackback : 0 
longjmpは例外の代わりになるか
前回列挙した例外に変わる方法の順序とは異なりますが、最も例外処理に近いlongjmpについて、最初に考察してみたいと思います。例外処理におけるthrowも、longjmpも、関数の枠組みを越えて大域分岐する点では同じです。決定的に違うのは、分岐途中にある自動オブジェクトのデストラクタを呼び出すかどうかです。この一点を除けば、setjmpとlongjmpを使って、例外処理と同様の機能を作成することも不可能ではありません。では、Java......
2006-04-13 | Comment : 1  | Trackback : 0 
例外の代わり
言語機能としての例外処理を使わない場合、何らかの方法を用いて例外的な事象を通知することになります。例外に代わる方法としては、次のようなものが考えられます。返却値として要因を表す値を返す。あるいは値の格納先を指すポインタを引数として渡してもよい。コールバック関数を登録する。シグナル処理ルーチンやμITRONのタスク例外処理ルーチンでもよい。errno、またはそれと同等の静的オブジェクトを使用する。フックルーチ......
2006-04-12 | Comment : 0  | Trackback : 0 
例外処理のないC++
標準C++における例外処理機構は、言語レベルでサポートされるものであり、ライブラリのように用がなければ使わなくても済むという代物ではありません。しかし、例外処理機構が存在すると、このブログでもたびたび触れてきたように、プログラムの肥大化を招くなど、大きなオーバーヘッドの要因になります。されに、マルチタスク対応できない場合があるなど、いろいろな問題も内在しています。次回からは、敢えて標準規格に背を向け......
2006-03-31 | Comment : 0  | Trackback : 0 

C++と組み込み環境 | Page Top▲

Navigation
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。