如何解释MCOIMAPMessage上的typedef enum属性
我的问题主要是关于如何解释typedef枚举,但以下是背景: 我使用的是MailCore2,我试图找出如何读取我正在获取的单个电子邮件对象的标志 我获取的每个MCOIMAPMessage*电子邮件都有一个名为“flags”的属性。flags的类型为MCOMessageFlag。当我查找MCOMessageFlag的定义时,我发现它是一个typedef枚举:如何解释MCOIMAPMessage上的typedef enum属性,c,typedef,mailcore2,C,Typedef,Mailcore2,我的问题主要是关于如何解释typedef枚举,但以下是背景: 我使用的是MailCore2,我试图找出如何读取我正在获取的单个电子邮件对象的标志 我获取的每个MCOIMAPMessage*电子邮件都有一个名为“flags”的属性。flags的类型为MCOMessageFlag。当我查找MCOMessageFlag的定义时,我发现它是一个typedef枚举: typedef enum { MCOMessageFlagNone = 0, /** Seen/Read
typedef enum {
MCOMessageFlagNone = 0,
/** Seen/Read flag.*/
MCOMessageFlagSeen = 1 << 0,
/** Replied/Answered flag.*/
MCOMessageFlagAnswered = 1 << 1,
/** Flagged/Starred flag.*/
MCOMessageFlagFlagged = 1 << 2,
/** Deleted flag.*/
MCOMessageFlagDeleted = 1 << 3,
/** Draft flag.*/
MCOMessageFlagDraft = 1 << 4,
/** $MDNSent flag.*/
MCOMessageFlagMDNSent = 1 << 5,
/** $Forwarded flag.*/
MCOMessageFlagForwarded = 1 << 6,
/** $SubmitPending flag.*/
MCOMessageFlagSubmitPending = 1 << 7,
/** $Submitted flag.*/
MCOMessageFlagSubmitted = 1 << 8,
} MCOMessageFlag;
当然,这不起作用,但这是一个想法。有人能建议我如何完成这项工作和/或如何理解typedef枚举吗?枚举的值表示各个位,因此您需要逐位操作来检查标志:
BOOL wasSeen = ( email.flags & MCOMessageFlagSeen ); // check if a bit was set
BOOL wasSeen = ( email.flags & MCOMessageFlagSeen ); // check if a bit was set
BOOL wasSeen = ( email.flags & MCOMessageFlagSeen ); // check if a bit was set
BOOL wasSeen = ( email.flags & MCOMessageFlagSeen ); // check if a bit was set
无符号字符
或无符号整数
)。基本上,如果设置了一个标志,那么也会设置相应的位
例如:
MCOMessageFlagMDNSent = 1 << 5
如果按位AND结果不同于零,则结果将为true
,仅当设置了相应的位时才会发生这种情况
您可以使用或轻松设置标志:
flags |= MCOMessageFlagMDNSent;
或使用和重置它:
flags &= ~MCOMessageFlagMDNSent;
这些标志在中使用 这允许在一个数字类型中存储多个开/关标志(允许它是
无符号字符
或无符号整数
)。基本上,如果设置了一个标志,那么也会设置相应的位
例如:
MCOMessageFlagMDNSent = 1 << 5
如果按位AND结果不同于零,则结果将为true
,仅当设置了相应的位时才会发生这种情况
您可以使用或轻松设置标志:
flags |= MCOMessageFlagMDNSent;
或使用和重置它:
flags &= ~MCOMessageFlagMDNSent;
这些标志在中使用 这允许在一个数字类型中存储多个开/关标志(允许它是
无符号字符
或无符号整数
)。基本上,如果设置了一个标志,那么也会设置相应的位
例如:
MCOMessageFlagMDNSent = 1 << 5
如果按位AND结果不同于零,则结果将为true
,仅当设置了相应的位时才会发生这种情况
您可以使用或轻松设置标志:
flags |= MCOMessageFlagMDNSent;
或使用和重置它:
flags &= ~MCOMessageFlagMDNSent;
这些标志在中使用 这允许在一个数字类型中存储多个开/关标志(允许它是
无符号字符
或无符号整数
)。基本上,如果设置了一个标志,那么也会设置相应的位
例如:
MCOMessageFlagMDNSent = 1 << 5
如果按位AND结果不同于零,则结果将为true
,仅当设置了相应的位时才会发生这种情况
您可以使用或轻松设置标志:
flags |= MCOMessageFlagMDNSent;
或使用和重置它:
flags &= ~MCOMessageFlagMDNSent;
谢谢,那非常有帮助。谢谢,那非常有帮助。谢谢,那非常有帮助。谢谢,那非常有帮助。