簡體   English   中英

C,Objective-C中的雙花括號是什么

[英]What is this double curly brace in C, Objective-C

參考此源代碼@autoreleasepool中的雙花括號的@autoreleasepool什么?

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        {{
            assert([EnumWith1ConstantSansExplicitValuesByLabel() count] == 1);
            assert([[EnumWith1ConstantSansExplicitValuesByLabel() objectForKey:@"EnumWith1ConstantSansExplicitValues_Constant1"] isEqual:[NSNumber numberWithInt:0]]);

            assert([EnumWith1ConstantSansExplicitValuesByValue() count] == 1);
            assert([[EnumWith1ConstantSansExplicitValuesByValue() objectForKey:[NSNumber numberWithInt:0]] isEqual:@"EnumWith1ConstantSansExplicitValues_Constant1"]);

            EnumWith1ConstantSansExplicitValues a = 0;

            assert(EnumWith1ConstantSansExplicitValues_Constant1 == a);
            assert([@"EnumWith1ConstantSansExplicitValues_Constant1" isEqualToString:EnumWith1ConstantSansExplicitValuesToString(a)]);
            assert(EnumWith1ConstantSansExplicitValuesFromString(EnumWith1ConstantSansExplicitValuesToString(EnumWith1ConstantSansExplicitValues_Constant1), &a));
            assert(EnumWith1ConstantSansExplicitValues_Constant1 == a);

            a++;
            assert([@"<unknown EnumWith1ConstantSansExplicitValues: 1>" isEqualToString:EnumWith1ConstantSansExplicitValuesToString(a)]);
            assert(!EnumWith1ConstantSansExplicitValuesFromString(@"foo", &a));
        }}
        {{
            assert([EnumWith1ConstantSansExplicitValuesTrailingCommaByLabel() count] == 1);
        }}
    ...
    printf("success\n");
    return 0;
}

雙花括號*沒有什么特別的。 作者只是使用它在相當長的方法中在邏輯上分離了代碼段。

*:除了聲明作用域塊的單彎括號行為之外。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM