冒号如何与结肠配合使用?

吉尔

我正在执行一些代码重构,并且遇到了一些以前从未见过的ivars语法。代码看起来像

@interface Object : NSObject {
@private BOOL aBool:1;
}
@end

我的问题是,该:1怎么办?

脚本

对于ivar,此语法与在struct内部具有相同的含义。您要声明一个指定大小的位域。

在这种情况下,这可能对类的实际大小没有任何影响-我认为您分配的字节数不能少于-但如果您尝试将值放入变量,编译器会警告您对于您指定的位域大小来说,这太大了:

@interface BittyBoop : NSObject
{
    unsigned char bit:1;
    unsigned char bits:4;
}

@end

@implementation BittyBoop

- (void)doThatThingIDo
{
    bit = 2;    // Implicit truncation from 'int' to bitfield changes value from 2 to 0
    bits = 2;   // no warning
}

@end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章