1
bail:
    if ( err && image ) {
        CGImageRelease( image );
        image = NULL;
    }
    if ( provider ) CGDataProviderRelease( provider );
    if ( colorspace ) CGColorSpaceRelease( colorspace );
    *imageOut = image;
    return err;

私はいくつかのコードを見て、これを見つけました。これは今まで見たことがありません。とはbail:どういう意味ですか?

ここから来ます。

4

2 に答える 2

7

gotoステートメントがジャンプするラベルです。

あなたが見ているコード は、次のようにSquareCamViewController.mという名前のマクロを使用していますrequire:

require( error == nil, bail );

このマクロはAssertMacros.hヘッダー ファイルで定義されます。2 番目の引数としてラベルを取り、goto最初の引数が false と評価された場合に使用します。

関数の最後でクリーンアップ コードにジャンプするために使用することは、C でラベルとラベルをgoto使用する最も一般的な方法です。goto

于 2013-03-29T03:15:28.477 に答える
3

bail:はラベルです。これは標準の C 構文です。適切に記述されたコードではあまり使用されません。最も一般的な使用法はgotoです。のご使用はお避けくださいgoto。参照したコードでは、require関数によって使用されています。失敗した場合、コードはラベルにrequireジャンプし、間にある他のすべてのコードをスキップします。bail

于 2013-03-29T03:11:24.847 に答える