encountered “cleanup:” in a Foundation code sample

2019-03-02 06:23发布

问题:

so in some sample code from this upcoming Core Audio Book i've encountered an unfamiliar symbol

cleanup:

which is used before some dispose(myStuff) functions are called. It's not preceded by an '@' or a '#'. Seems you can type any word, followed by a colon, and it will act like a comment?

int main (int argc, const char * argv[])
{
    @autoreleasepool 
    {
        NSLog(@"i am code.");

    cleanup:    
    foop:
    lol:

        NSLog(@"even more code.");
    }
    return 0;
}

回答1:

It's not a comment. It's a label specifying a location for goto.

E.g.

int main (int argc, const char * argv[])
{
    while (1) {
        printf("Is this an infinite loop?\n");
        goto endLabel;
    }

    endLabel:    

    printf("No.");

    return 0;
}

Output:

Is this an infinite loop?
No.


回答2:

That's a label, to be used in a goto statement.