[解決済み】ループや関数をサポートする言語で「goto」の正当な使用例はあるのか?
質問
私は長い間、次のような印象を抱いていました。
goto
は、可能な限り使用しないでください。
しかし、先日、(C言語で書かれた)libavcodecを熟読していたところ、複数の使い方があることに気づき、驚きました。
を使用することが有利になることはありますか?
goto
ループや関数をサポートする言語では? もしそうなら、なぜですか? ループや関数の使用を明確に正当化する具体的な例を挙げてください。
goto
.
解決方法は?
私が知っている限りでは、"goto"文を使う理由はいくつかあります(すでにお話されている方もいらっしゃいますが)。
関数をきれいに終了させる
関数内ではしばしば、リソースを割り当て、複数の場所で終了する必要がある場合があります。 プログラマーは、関数の最後にリソースのクリーンアップコードを置くことで、コードを簡素化することができ、関数のすべての "exit points" はクリーンアップラベルをゴーイングします。 このようにすれば、関数のすべての"exitポイント"でクリーンアップコードを書く必要がなくなります。
ネストしたループの終了
ネストされたループの中にいて、そこから抜け出す必要がある場合 すべて を使えば、break 文や if-check よりもずっとすっきりしてシンプルになります。
低レベルのパフォーマンス改善
これは、パフォーマンスが重要なコードにおいてのみ有効ですが、goto文は非常に高速に実行され、関数内を移動する際にブーストを与えることができます。 しかし、これは諸刃の剣で、コンパイラは通常gotoを含むコードを最適化することができないからです。
これらの例では、ゴトは一つの関数の範囲に限定されていることに注意してください。
関連
-
[解決済み] 2次元ベクトルの外積を計算する
-
[解決済み] O(N log N)の複雑さ - 線形に似ている?
-
[解決済み] ハッシュコードとチェックサム、その違いは?
-
[解決済み] モジュラスディビジョンのしくみ
-
[解決済み] べき乗演算とは何ですか?
-
[解決済み】Debug.Assert()はいつ使うべきですか?)
-
[解決済み] 直交性」とは何ですか?
-
[解決済み] プログラミングにおける "Context "という言葉?[クローズド]
-
[解決済み】10行以下の簡単なコードでできる最もクールなことは何ですか?初心者を鼓舞するのに役立つ [終了しました]
-
[解決済み] パワーメーターの赤と緑の間の色を生成する?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン