问题标签 [bitflags]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 在 C++ 中用逻辑或(“|”)分隔选项
我知道在初始化 fstream 的实例时可以添加选项,例如:
在这种情况下,有 3 个选项。我有几个问题:
- 我应该如何在我自己的函数中实现它?
- 我应该定义任何 const 值或 marcos 吗?
- 如何解析选项并正确处理它们?
c - C中的位操作和标志测试
假设我有两个类型为int
、a
和的变量b
以及一个 flag F
。
有什么简单的方法来测试a
and b
,有 flag F
,或者他们都没有?
为了测试他们是否都拥有它,我可以使用类似的东西:
要测试他们是否都没有它,我可以使用类似的东西:
整个测试变成:
但这看起来,太长太复杂了。有没有更简单的解决方案?
rust - 为什么编译 bitflags 1.0 会产生“expected ident, found #”错误?
当我尝试在 macOS Sierra 10.12.6 中使用 bitflags v1.0.1 在 Rust 中构建项目时,代码失败并出现以下错误:
我希望它能够成功构建。
vba - Vb6 Deep Count UDT 对象中的属性数量
我有一些用户定义的类型,例如
我需要做的,是写一个函数。这能够计算我传递给它的任何对象中的变量数量。
这将用于网络优化。我想避免在字符串的情况下发送等于 0 或未设置的数据。
我的最终目标是服务器将计算我的对象中的变量,标记哪些不是 0,并存储在位标记字节中。将字节或多个字节连同不等于 0 的变量一起发送给客户端。
所以我会有一个看起来像这样的数据包:Byte() {PacketIDByte,BitFlagBytes(),NotEmptyData()}
客户端可以访问相同的数据,因此它可以计算对象有多少变量,并确定哪些变量已经发送并需要设置。
希望我足够清楚,(通过这种方式,我希望将我的 58 * 297 字节数据包降低到大约 6to24 * 297 字节)
本质上,我需要知道如何遍历对象中的所有属性。
这是一段不起作用的代码,我觉得这说明了我要完成的工作。
struct - 具有混合位标志和普通成员的结构
我正在尝试在 Rust 中为 FFI 重新创建一个混合位域成员和“普通”成员的 C 结构。
我已经读到bitflags crate将是一个可以使用的,不幸的是我发现文档缺乏关于语法实际如何工作的文档。
bitflags crate 可以更轻松地创建与 C 中使用枚举类似的样式的位掩码。位域板条箱声称创建可以访问的位域,但是我不知道它是如何工作的。
我有一个这样的C结构:
我不知道如何在 Rust 中表示它,我会使用 crate libc来访问c_uint
,但除此之外,我目前几乎没有想法,并且找到其他未证明成功的代码:
这些只是猜测,如何创建正确的表示?
c - 位操作和标志
https://i.imgur.com/VU56Rwn.png
A:当打开的手册页说:指定的标志由以下值组成:
这意味着我们应该在这样的标志之间使用逻辑或:O_RDONLY || O_WRONLY 来指定我们想要的权限组合。
B:为了指示不同的选项,我们使用位标志(而不是字符或整数)以节省空间。
C:对位标志执行操作很快。
D:系统调用中使用的位标志在库文件中定义。
E:命令 chmod 使用八进制定义的位标志常量,因为有八种可能的权限状态。
如果它是一个好的系统库,我知道库文件中没有定义位标志。它们通常是标头中的常量或#defines,而不是编译的对象,如果那是“库文件”所指的话。但是,我不明白它们是如何节省空间的,毕竟位标志不只是整数吗?
c++ - Rust 位域和枚举 C++ 风格
我是来自 C/C++ 的 Rust 初学者。首先,我尝试使用user32.MessageBox为 Microsoft Windows 创建一个类似“Hello-World”的简单程序,在其中我偶然发现了与位域相关的问题。免责声明:所有代码片段都是在 SO 编辑器中编写的,可能包含错误。
C语言中的消息框“Hello-World”
调用函数的 UTF-16LE 版本所需的合并 C 声明是:
用法:
MessageBoxType
枚举包含枚举值和标志值。问题在于MB_DEFBUTTON2
andMB_DEFBUTTON3
可以一起使用并且“意外”导致MB_DEFBUTTON4
. 此外,访问非常容易出错且丑陋,我必须在检查值中的标志时手动移动所有内容|
。&
C++ 中的消息框“Hello-World”
在 C++ 中,可以将相同的枚举巧妙地放入一个结构中,该结构与枚举具有相同的大小,并使访问方式更容易、更安全、更漂亮。它利用了位域 - C 标准未定义的位域布局,但由于我只想将它用于 x86-Windows,所以它总是相同的,所以我可以依赖它。
用法:
使用这个 C++ 版本,我可以将标志作为布尔值访问,并具有其他类型的枚举类,同时它std::uint32_t
在内存中仍然很简单。现在我努力在 Rust 中实现这一点。
Rust 中的消息框“Hello-World”
我知道WinApi crate,据我了解,它是从 VC++ 头文件自动生成的,这没有帮助,因为我会遇到与 C 相同的问题。我也看到了bitflags 宏,但在我看来它没有处理这种“复杂性”。
我将如何在 Rust 中实现MessageBoxFlags
和MessageBoxType
,所以我可以像在我的 C++ 实现中那样以一种很好(不一定相同)的方式访问它?
c# - 如何使 [Flags] 枚举和 switch case 一起工作?
如何使 [Flags] 枚举和 switch case 一起工作?非常希望使它看起来简单。类似的问题问了很多次,但从来没有直接向 [Flags] 枚举。
如果 M1 设置执行操作 1,
如果 M2 设置执行 operation2 ,
如果 BOTH M1 和 M2 则设置执行操作 1 和 2。
我也很确定很多人想知道如何使它工作。请求修复 C#?
c++ - 枚举中 ALL 标志的紧凑非重复方式,表示 C++ 中的位标志
我经常将枚举用于位标志,如下所示
是否有一种简洁的重复方式来定义一个将所有其他标志组合在一个枚举中的 ALL 标志?对于小型枚举,上述方法效果很好,但假设一个枚举中有 30 个标志,这样做会很乏味。有什么工作(一般)像这样
?