goto を慎重に使用する (C++をもう一度)
[履歴] (2014/12/14 19:44:50)
最近の投稿
注目の記事

サンプルコード

goto を使用すると関数内ジャンプが実現できます。基本的に使用しないことが推奨されていますが、下記サンプルコードのような「エラー処理」や「多重ループ break/continue」での使用であれば許容範囲とされることもあります。

エラー処理

#include <iostream>
#include <cstdlib>
using namespace std;

int main() {
    const char* error = NULL;

    // エラーを発生させてしまった場合
    if (true) {
        error = "サンプルエラーが発生しました。";
        goto ON_ERROR;
    }

    // goto は変数の初期化を飛び越えられないため
    // int n = 0; // とするとエラーになります。

    // 正常時の処理
    // ...

    return EXIT_SUCCESS;

 ON_ERROR:
    cerr << error << endl;
    return EXIT_FAILURE;
}

多重ループ break

#include <iostream>
using namespace std;

int main() {

    for (int i = 0; i < 16; ++i) {
        for (int j = 0; j < 16; ++j) {
            if(true) {
                goto LOOP_END;

                // ただ、この程度であれば goto せずとも
                // i = 16;
                // break; // で事足ります。
            }

            // ...
        }
    }

 LOOP_END:
    ;

    return 0;
}
関連ページ