- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我开始做更多的内核编程,在阅读中发现invbool
的存在.但是,我似乎在互联网上找不到任何关于它的信息,除了记录在案的定义,在几个地方几乎逐字复制:
The invbool type inverts the value, so that true values become false and vice versa.
最佳答案
invbool
函数用于解析内核命令行和模块选项。 bool
版本解析用户可以设置为0/1
的选项或 N/Y
或 off/on
, 并设置 bool
相应地标记。 invbool
版本适用 !
结果,所以Y
映射到 false
和 N
映射到 true
.
据我所知,当程序员想要一个与用户配置参数相反的内部标志时,它们的唯一目的是为了方便或“清晰”。例如,从用户的角度来看,能够设置一个标志来禁用 foo 选项可能更有意义(因为它应该默认启用),但从内核程序员的角度来看,拥有一个简单的标志更方便表示是否启用了 foo。然后您可以有一个名为 disable_foo
的用户设置参数。和一个名为 foo_is_enabled
的内部 boolean 标志.你想要foo_is_enabled = false
当用户指定 disable_foo=Y
, 所以你可以使用 invbool
这里。
您可以在 aty128fb.c 中看到类似的情况。 :用户可以设置nomtrr
用于禁用内存类型范围寄存器的参数,但程序员更喜欢使用 boolean 变量 mtrr
即 true
如果启用了 MTRR。
你可能认为这些是多余的,因为你可以只做 mtrr = !parameter_bool("nomtrr")
, 但实际上 param_set_*
函数通过引用而不是按值返回参数值,所以你不能这么简单地扑通一声 !
进入表达式。
我怀疑这个想法是定义这些函数使这样的代码更加“自我记录”。这当然值得商榷。
关于c - C内核编程中的invbool有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67185055/
我是一名优秀的程序员,十分优秀!