2017-05-28 5 views
1

私はプログラムの方法を教えて数年後に私の最初の本当のC++アプリケーション(2Dゲーム)を作成しようとしています。私が実行している問題は、多くの場合、チュートリアルではしばしば適切なエラー処理技術をスキップする(または最小限に抑える)ことです。エラー処理のしくみを学ぶために、私はCエラーコードとerrnoとその長所/短所を理解しようと試みました。この後、私はC++ 11のstd::error_code/std::error_conditionを見ましたが、私はerrnoのようなものよりもその重要性と改善を理解するのに問題があります。 std::error_codeのようなものは、正確にはerrno以上の改善ですか?std :: error_code/error_conditionの利点は?

+2

だけに注目:既に例外を使用していますか? –

+0

私は、可能なランタイムオーバーヘッドとシングルスレッドゲームのパフォーマンスの必要性のために、彼らから離れて恥ずかしそうにしています。 – Jason

+0

'std :: error_code'はより型保証型です。 – AndyG

答えて

0

errnoは今日のコンピュータでエラーを処理する方法が非常に貧弱です。スレッドセーフではないためです。あなたがゲームを作ってみたいと思うなら、スレッドが必要になるでしょう。

std :: error_codeは、実際にエラーが発生した場合に、それをあなた自身のエラーに変換することができるという改善が追加されました。

https://www.youtube.com/watch?v=w7ZVbw2X-tEをご覧ください。あなたはerror_codeについて多くの賢明さを感じます。

免除の対象については、それらを正しく処理することを確認してください。組み込みシステムでは、がどれくらいの時間かかるのか分からないため、通常は例外的な余裕がありません。より多くのスペースを取ることになります。しかしゲームでは、AAAのゲーム会社は例外を使用しないが、それを行うために独自の特殊な容器を書くことは事実です(例えば、EASTLとWG21-SG14の図書館と議論を参照してください)。 最初のゲームを書く場合は、自分のものを書くことができないため、例外を含む標準的な方法を使用してください。例外がスローされ、それをキャッチしないと、プログラムは終了し、学習が続けられます。

か、少なくともC++ 14や物資が、これは両方のメモリ安全性と脱毛とあなたの問題を削減する機能を使用して、現代 C++を書くために自分自身を教えるようにしてください;)