认证0级讲师
ついに、この興味深い質問を目にしました。私の goto プロセスを共有するために特別にブログ投稿を書きました。Goto の使用方法
影響が構造に与える可能性のあるダメージよりも大きい場合 (goto 自体は間違っていませんが、マンパワーは限られており、goto を追加すると余計なトラブルが発生することがほとんどです)私が入った goto です。私の個人的な研究での接触は、n レベルのループから飛び出すためにも使用されます。
goto はできるだけ使用しないでください...コードは人が読むためのものであり、読み取りに影響を与えるコードは書かないでください...
私が読んだソース コードの中で goto を好むのは OpenSSL です。OpenSSL は純粋な C で書かれており、多数の複雑なデータ構造が割り当てられているため、関数の終了時にクリーンアップする必要があります。エラーによってプロセスが中断された場合、 もクリーニングする必要があるため、関数の終了が 1 つだけであることを確認するために、goto を使用してクリーニング位置にジャンプします。 C++ にはクリーンアップを実行できるクラス オブジェクトのデストラクターがあり、C++11 で追加されたスマート ポインターを使用して新しいものを自動的にリリースできるため、これは基本的に必要なくなりました。多くの言語では goto が保持されていますが、その使用は推奨されません。 実際、C/C++ はこのメソッドを使用して goto を置き換えることができます。
do{ もし(...) 壊す; while(0); cleanup();
C の場合は関数内で気軽に使用できますが、C++ の場合は問題を解決するための try catch やその他の解決策がありますので使用しないでください。
ついに、この興味深い質問を目にしました。私の goto プロセスを共有するために特別にブログ投稿を書きました。
Goto の使用方法
影響が構造に与える可能性のあるダメージよりも大きい場合 (goto 自体は間違っていませんが、マンパワーは限られており、goto を追加すると余計なトラブルが発生することがほとんどです)
私が入った goto です。私の個人的な研究での接触は、n レベルのループから飛び出すためにも使用されます。
goto はできるだけ使用しないでください...コードは人が読むためのものであり、読み取りに影響を与えるコードは書かないでください...
私が読んだソース コードの中で goto を好むのは OpenSSL です。OpenSSL は純粋な C で書かれており、多数の複雑なデータ構造が割り当てられているため、関数の終了時にクリーンアップする必要があります。エラーによってプロセスが中断された場合、 もクリーニングする必要があるため、関数の終了が 1 つだけであることを確認するために、goto を使用してクリーニング位置にジャンプします。
C++ にはクリーンアップを実行できるクラス オブジェクトのデストラクターがあり、C++11 で追加されたスマート ポインターを使用して新しいものを自動的にリリースできるため、これは基本的に必要なくなりました。多くの言語では goto が保持されていますが、その使用は推奨されません。
実際、C/C++ はこのメソッドを使用して goto を置き換えることができます。
C の場合は関数内で気軽に使用できますが、C++ の場合は問題を解決するための try catch やその他の解決策がありますので使用しないでください。