为什么对 C 枚举定义中的值使用按位移位运算符?

2024-03-15

Apple 有时会在其应用程序中使用按位移位运算符enum定义。例如,在CGDirectDisplay.h文件是核心图形的一部分:

enum {
  kCGDisplayBeginConfigurationFlag  = (1 << 0),
  kCGDisplayMovedFlag           = (1 << 1),
  kCGDisplaySetMainFlag         = (1 << 2),
  kCGDisplaySetModeFlag         = (1 << 3),
  kCGDisplayAddFlag         = (1 << 4),
  kCGDisplayRemoveFlag          = (1 << 5),
  kCGDisplayEnabledFlag         = (1 << 8),
  kCGDisplayDisabledFlag        = (1 << 9),
  kCGDisplayMirrorFlag          = (1 << 10),
  kCGDisplayUnMirrorFlag        = (1 << 11),
  kCGDisplayDesktopShapeChangedFlag = (1 << 12)
};
typedef uint32_t CGDisplayChangeSummaryFlags;

为什么不简单地使用递增int就像“正常”一样enum?


也许以十六进制(或二进制)写入值会有所帮助:-)

enum {
  kCGDisplayBeginConfigurationFlag  = (1 << 0), /* 0b0000000000000001 */
  kCGDisplayMovedFlag               = (1 << 1), /* 0b0000000000000010 */
  kCGDisplaySetMainFlag             = (1 << 2), /* 0b0000000000000100 */
  kCGDisplaySetModeFlag             = (1 << 3), /* 0b0000000000001000 */
  kCGDisplayAddFlag                 = (1 << 4), /* 0b0000000000010000 */
  kCGDisplayRemoveFlag              = (1 << 5), /* 0b0000000000100000 */
  kCGDisplayEnabledFlag             = (1 << 8), /* 0b0000000100000000 */
  kCGDisplayDisabledFlag            = (1 << 9), /* 0b0000001000000000 */
  kCGDisplayMirrorFlag              = (1 << 10),/* 0b0000010000000000 */
  kCGDisplayUnMirrorFlag            = (1 << 11),/* 0b0000100000000000 */
  kCGDisplayDesktopShapeChangedFlag = (1 << 12) /* 0b0001000000000000 */
};

现在您可以添加它们(或“或”它们)并获得不同的值

kCGDisplayAddFlag | kCGDisplayDisabledFlag /* 0b0000001000010000 */
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么对 C 枚举定义中的值使用按位移位运算符? 的相关文章

  • 调用许多网络服务的最佳方式?

    我有 30 家子公司 每家都实施了他们的 Web 服务 使用不同的技术 我需要实现一个Web服务来聚合它们 例如 所有子公司的Web服务都有一个名为的Web方法GetUserPoint int nationalCode 我需要实现我的网络服
  • 当从后台工作程序发生事件时,XlCall.Excel(XlCall.xlcCalculateNow) 抛出 XlCallException

    我有一个 ExcelFunction 来排队一些计算 ExcelFunction public static void QueueCalcs takes ranges var calcRequests builds list of calc
  • 从 Invoke 方法获取 RETURN

    我正在尝试从另一个线程上的列表框项目中读取值 我尝试创建一种新方法来运行调用命令 我可以设法将命令发送到列表框 例如通过调用方法添加 但我似乎无法得到响应 我似乎无法获取该项目的值 我尝试了几种方法 一旦我将它从空变为字符串 事情就开始变得
  • Nullable 是不可能的,为什么不呢? [复制]

    这个问题在这里已经有答案了 如果这是一个愚蠢的问题 请原谅 我正在尝试更好地理解 Net 中的 Nullable 类型 从我从 Microsoft 源代码 使用 ReSharper 中注意到的内容 我了解到 Nullable 是一个结构 而
  • EventHandler 应该始终用于事件吗?

    我一直在愉快地使用自定义委托类型和通用编写事件Action委托类型 没有真正考虑我在做什么 我有一些很好的扩展助手Action and EventHandler这使我倾向于使用那些预定义的委托类型而不是我自己的委托类型 但除此之外 除了惯例
  • C# Outlook 从收件人获取 CompanyName 属性

    我目前正在使用 C 编写 Outlook 2010 AddIn 我想要的是从我从 AppointmentItem 中提取的 Recipient 对象中获取 CompanyName 属性 因此 有了 AppointmentItem 的收件人
  • MSMQ接收和删除

    是否有任何选项可以在读取消息后将其从 MSMQ 中删除 比如 接收 删除可以作为原子操作运行吗 听起来您想查看下一条消息 然后在处理完成后接收它 Message message Queue Peek Queue ReceiveById me
  • DataGridView 列中的数字文本框

    我有一个DataGridView 我想要它的第一列或任何所需的列 其中有textboxes在其中 成为NUMERIC ONLY 我目前正在使用这段代码 private void dataGridViewItems EditingContro
  • 判断串口是普通COM还是SPP

    我正在寻找一种方法来确定 COM 是标准 COM 还是 SPP COM 也称为 COM 设备的电缆替换蓝牙适配器 我有一个可以在 USB COM gt USB 和蓝牙下工作的设备 并且蓝牙接口可以与 SPP 一起工作 我目前正在使用Syst
  • 无法获取本地或参数的值,因为它在此指令指针处不可用,可能是因为它已被优化掉

    Visual Studio 2010 会删除 没有其他词 不安全块中函数参数之一中的数据 什么可能导致此错误 调试器显示以下消息 Cannot obtain value of local or argument as it is not a
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • 如何在 EF Core 2.1 中定义外键关系

    我的 DAL 使用 EF Core 2 1 这就是我的模型的样子 一名用户只能拥有一种角色 Role entity kind of master public class Role public int RoleId get set pub
  • C 与 C++ 中的 JNI 调用不同?

    所以我有以下使用 Java 本机接口的 C 代码 但是我想将其转换为 C 但不知道如何转换 include
  • WinForms - 加载表单时如何使用 PaintEventArgs 运行函数?

    我试图理解图形 在 Graphics FromImage 文档中 它有这样的示例 private void FromImageImage PaintEventArgs e Create image Image imageFile Image
  • 在 Qt 中播放通知(频率 x)声音 - 最简单的方法?

    Qt 5 1 或更高版本 我需要播放频率为 x 的通知声音 n 毫秒 如果我能像这样组合音调那就太好了 1000Hz 持续 2 秒 然后 3000Hz 持续 1 秒 最简单的方法是使用文件 WAV MP3 例如如此处所述 如何用Qt播放声音
  • 当 Verb="runas" 时设置 ProcessStartInfo.EnvironmentVariables

    我正在开发一个 C 应用程序 我需要创建变量并将其传递给新进程 我正在使用ProcessStartInfo EnvironmentVariables 新进程必须提升运行 因此我使用 Verb runas var startInfo new
  • 值和类型的简洁双向静态 1:1 映射

    我将从我想象如何使用我想要创建的代码开始 它不必完全像这样 但它是我在标题中所说的 简洁 的一个很好的例子 就我而言 它是将类型映射到相关的枚举值 struct bar foo
  • 在 C 中使用 #define 没有任何价值

    If a define没有任何价值地使用 例如 define COMMAND SPI 默认值是0吗 不 它的评估结果为零 从字面上看 该符号被替换为空 然而 一旦你有了 define FOO 预处理器条件 ifdef FOO现在将是真的 另
  • MSVC编译器下使用最大成员初始化联合

    我正在尝试初始化一个LARGE INTEGER在 C 库中为 0 确切地说是 C 03 以前 初始化是 static LARGE INTEGER freq 0 在 MinGW 下它产生了一个警告 缺少成员 LARGE INTEGER Hig
  • 是否可以使用 Dapper 流式传输大型 SQL Server 数据库结果集?

    我需要从数据库返回大约 500K 行 请不要问为什么 然后 我需要将这些结果保存为 XML 更紧急 并将该文件通过 ftp 传输到某个神奇的地方 我还需要转换结果集中的每一行 现在 这就是我正在做的事情 TOP 100结果 使用 Dappe

随机推荐

  • 语音回声问题

    我正在尝试使用 Adob e Flex 构建一个视频聊天程序 但回声存在一个巨大的问题 如果参与者没有使用耳机 他们所说的一切都会产生回声 更糟糕的是 它们实际上可以创建回声的正反馈循环 直到麦克风静音为止该循环不会结束 有没有人在 Fle
  • 根据 WooCommerce 结账中的分类术语限制支付网关

    在我的 WooCommerce 商店中 仅当产品具有类别 ID 266 的特定产品类别时 我想限制并显示支付网关 支票 现在我有了这个代码片段 但它的作用相反 它在结账时禁用了特定产品类别的网关 add filter woocommerce
  • JQuery UI 可拖动:超出一侧的限制

    我正在使用 JQuery UI 来实现可调整大小 可拖动的元素 现在我想为这些元素定义一个包含 限制在三个 边上的调整大小 拖动 例如 看看这个JSFiddle 示例 http jsfiddle net zuul e2yfC 5 您可以看到
  • 使用 alamofire 的多部分/表单数据

    我正在进行 post API 调用 并且需要使用 multipart form data 我知道如何使用 JSON 进行调用 但我不熟悉 multipart form data 使用 JSON 这是一个超级简单的调用 只需创建一个类型参数
  • 用于更新 JTable 中给定单元格/列并增加焦点的侦听器类型

    我正在尝试使用预定义第一列的 JTable 用户仅将数据输入到第二列 数量 然后 我通过将 服务 列和 数量 列相乘来计算最终收入 并将其显示在第三列 收入 中 Service Quantity Income 40 00 X 40 00 3
  • Java:HashMap 大小是“质数”还是“2 的幂”?

    许多书籍和教程都说哈希表的大小必须是素数才能将键均匀分布在所有桶中 但是Java的HashMap始终使用 2 的幂的大小 难道不应该使用素数吗 作为哈希表大小 质数 或 2 的幂 哪个更好 使用 2 的幂可以有效地屏蔽哈希码的最高位 因此
  • Blend 2 sp1 中的 WPF 视觉状态管理器

    谁能向我解释如何让视觉状态管理器与 WPF 应用程序一起使用 它刚刚被添加到新的 wpftoolkit 中 我按照说明安装了它 但即使是示例也没有显示 VSM 在 silverlight 中它可以工作 但在 WPF 中不行 如果安装了最新的
  • Oracle 上个月的日期函数

    我有下面的查询 其中日期是硬编码的 我的目标是删除编码日期 查询运行时应提取上个月的数据 select count distinct switch id from email protected cdn cgi l email protec
  • a:active a href 不起作用

    我正在尝试在 a href 上应用 css 基本上我需要在单击 a href 时应用与悬停相同的样式以指示用户所在的页面 有任何想法吗 active意思是 被点击 或以其他方式激活 时 它并不意味着 链接到当前页面 CSS 与之最接近的是
  • 更改 UICollectionViewCell 中的标签位置

    我们有一个UICollectionView故事板上有一个原型单元 该细胞有一个UILabel label 其中 其定位没有自动布局 我们有条件地设置标签的框架 collectionView cellForItemAtIndexPath 像这
  • 根据 Beautifulsoup 中的内容排除标签

    我正在抓取类似于以下内容的 html 数据 div class target content p the content of the p p p the content of the p p p p div
  • G++ CAS (__sync_val_compare_and_swap) 问题需要解释

    这让我很头疼 我正在尝试实现一些 无锁 代码 并使用 CAS gcc sync val compare and swap 来完成繁重的工作 我的问题可以用下面的代码来显示 volatile bool lock void locktest v
  • 如何使用 vba 更新 powerpoint 2010 中嵌入的 Excel 链接

    我的问题是我已将图表粘贴到微软幻灯片软件 questions tagged powerpoint我正在尝试通过 Excel VBA 更新嵌入的链接 我尝试过下面的代码但失败了 code 1 AppPPT Presentations Open
  • jQuery/javascript 替换标签类型

    有没有一种简单的方法可以循环遍历所有 td 标签并将它们更改为 th ETC 我当前的方法是用 th 包裹它们 然后删除 td 但随后我会丢失其他属性等 jQuery replaceTagName 以下是一个 jQuery 插件 用于替换
  • Woocommerce 自定义产品列表分页

    我有这样的代码用于在 woocommerce 中获取和显示产品 args array post type gt product posts per page gt 30 loop new WP Query args if loop gt h
  • 421 4.3.0 临时系统问题。稍后重试 (10) [重复]

    这个问题在这里已经有答案了 我正在使用nodemailer npm 包和gmail 作为nodejs 中的服务 对于某些电子邮件 我收到以下错误 Data command failed 421 4 3 0 Temporary System
  • 只有一个(自定义)注释从一系列其他注释中轮换

    我的应用程序即将进入最后阶段 该阶段显示公交车的实时地图 所以 基本上 我有一个计时器 它定期从提供公交车实时位置的 xml 表中获取公交车的纬度和经度 我能够设置 xml 解析器 为公交车的移动设置动画并为公交车设置自定义 箭头 图像 然
  • Linq 中的 ISNULL 等效项

    我有一张带有一列的桌子IsActive现在我想获取具有给定状态的记录列表 但我想处理IsActive将 null 值视为 false 在 SQL 中我们使用 SELECT FROM dbo Table c WHERE ISNULL IsAc
  • 为什么 pip 需求文件包含“@​​file”而不是版本号?

    我使用 pip freeze gt requirements txt 创建了requirements txt 有些模块显示 file 而不是版本 它是什么意思以及为什么会显示 康达 4 8 3 这是requirements txt 的结果
  • 为什么对 C 枚举定义中的值使用按位移位运算符?

    Apple 有时会在其应用程序中使用按位移位运算符enum定义 例如 在CGDirectDisplay h文件是核心图形的一部分 enum kCGDisplayBeginConfigurationFlag 1 lt lt 0 kCGDisp