犬も猫も空想も扱っておりません。(旧・エト記)この広告は、90日以上更新していないブログに表示しています。(2):例外処理の準備C++オブジェクト指向とはあまり関係ないけど,例外処理について考えてみた。CとC++の決定的な違いの1つが,例外処理のやり方。Cの場合は,基本的に関数の返り値を使うか,静的なエラーバッファの情報を使うか,あるいはその両者の組み合わせを利用する。使って構造化された例外処理を記述することが可能である。この例外処理(Googleコーディング規約では禁止されていたはず)は,あまり好きではない。それひとえに,AIXか何かRISCプロセッサのコンパイラで,例外処理を有効にしただけで10%以上速度が低下した,というトラウマがあるからである。setjmp(みたいなことをしてるはず,多分)するのは,スマートじゃないよね。これは十分Cで記述可能なわけで,だから,やっぱり例外処理についてもC++の機能なんて必要ないんじゃないかと思ってしまう。囲まれていない関数のデバッグが,黒ヒゲ危機一髪的な,何ていうか,ヒヤヒヤ感?に溢れるものになるのもいやだ。エラー処理の責任の所在が関数スコープに納められているCの方が,精神衛生上いいよね。返り値を使うCのイケてないところは,真面目にエラー処理を行うと,たった1つのAPI呼び出しに平均で5行程度消費してしまうこと。部分は括り出せて,こんな感じで書ける。繰り返されるのが,やっぱりばかばかしい。while(0)とさせてもらった。これ以上のマクロの使用は止める。中で代入を行うことで(MSVCでは警告を抑制する必要あり)ライブラリ特有の返り値の型に寄らず,同じ記法でエラー処理が書ける。rc;}例えばこんな感じ。こんなもんで十分だろう。問題Archiveはてなブログをはじめよう!xoinuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。