C および C での有益な Goto 実装の例
goto ステートメントに対する広範な不支持にもかかわらず、それを効果的に使用できる例があります。このスレッドでは、最初はジョークとして認識されていた賛成票を投じた回答に触発されて、そのようなケースを検討します。
ケーススタディ: 無限ループ
次の例は、具体的で文書化された例を示しています。 goto の使用:
infinite_loop: // code goes here goto infinite_loop;
このループは、その明確さと具体性により、代替ループよりも推奨されます。 Goto は無条件分岐を表しますが、その代替手段は条件付き分岐と退化した常に真の条件を備えた構造に依存します。さらに、ラベルには意図が文書化されているため、追加のコメントは不要です。
ケーススタディ: C でのクリーンアップ
C では、goto は分岐によく使用されます。クリーンアップ ブロックへ:
void foo() { if (!doA()) goto exit; if (!doB()) goto cleanupA; if (!doC()) goto cleanupB; /* everything has succeeded */ return; cleanupB: undoB(); cleanupA: undoA(); exit: return; }
このアプローチにより、簡潔で構造化されたエラー処理が可能になります。潜在的なエラー状態はそれぞれ、適切なクリーンアップ コードに分岐する goto ステートメントで処理されます。 C の RAII は、このようなシナリオを処理するためのより慣用的な方法を提供します。
評価基準
公正な評価を確保するために、次の基準が確立されています。
以上がC および C で「goto」が実際に役立つのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。