C言語開発での例外処理
SCCが提供する匠の技についてご紹介します。

JavaとかC++開発者にとっては例外処理(try-catch)は常識というか必然です。
しかし、開発要員の確保から業務アプリケーションのバッチ処理をC言語で実装する場合も少なくありません。あるいはC++での開発の方が稀なのではないでしょうか。

C言語の場合エラー処理といえば、 「関数引数あるいは戻値にエラーコードを定義し、処理結果をif文で判定、上位ルーチンに戻す。」となります。
Java、C++の例外ハンドリングの扱いやすさに慣れると、C言語処理でも同様の例外ハンドリングを使えないのかと考える方も多いのではないでしょうか。

マクロとC標準関数を組合せることで擬似的にtry-catch&throwと同等のエラーハンドリングは実装可能です。

TRY

    処理 エラー発生時は例外をスローする関数呼び出しthrow(例外識別子)

CATCH(識別子A)

    エラーAの処理

CATCH(識別子B)

    エラーBの処理

END_CATCH

END_TRY



といったマクロを利用したコーディングとなります。

原理的なことが理解できるレベルのCマクロを公開します。(ZIP形式:1.35KB)
↑クリックすると圧縮ファイル(ZIP形式)のダウンロードができます。