一般的な考慮事項
MSDNによると、__try
と__except
は C 言語の拡張機能です。そのため、そのままでは持ち運びできません。
setjmp
一部のアプリケーションでは、マクロと/構造を使用して動作を模倣できる場合がありますlongjmp
。一般に、これは当てはまりません。特に、MSDN は次のように述べています。
式は本体の__except
スコープで実行されます。__try
これは、マクロだけでは実現できません。
あなたの質問
__try
gccで__except
有効な文は何ですか?
いいえ、そうではありません。gcc はこの Microsoft の方言である C をサポートしていないからです。
__try と __except は *nux 環境で移植可能な文ですか?
いいえ、そうではありませんが、*nix でも同様の例外処理を行う方法があります。
C で例外を処理するための __try および __except 文よりも優れたモードは存在しますか?
例外処理を行う際に C++ を使用する強い理由があります。デストラクタを持つ C++ スコープ オブジェクトは、標準の C リソース管理よりも、例外が存在する場合にはるかに堅牢です。try
そのため、何らかの方法でCを提供する実装がありますがcatch
、私はそれらに反対し、代わりに C++ を支持することをお勧めします。C++ での例外処理は標準の一部であるため、標準に準拠したすべてのコンパイラでサポートされており、移植性の問題はありません。