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