gpt4 book ai didi

c - 带有按位运算符的 Termios 语法配置

转载 作者:行者123 更新时间:2023-11-30 16:36:28 25 4
gpt4 key购买 nike

newattr.c_lflag &= ~(ICANON|ECHO);

这里是 c_lflag 的新值已经设置好了。但我不明白这是什么意思&= ~ | 是什么?表示介于 ICANON 之间和ECHO

最佳答案

在 macOS 上,ICANONECHO 的值在 /usr/include/sys/termios.h 中定义为:

#define ECHO    0x00000008  /* enable echoing */
#define ICANON 0x00000100 /* canonicalize input lines */

您的计算机上的值可能有所不同;细节并不重要,但关键是每个都是具有单个位集的数字。

| 运算符形成两个数字的按位“或”:0x000000108

~ 运算符形成两个数字的按位补码:0xFFFFFEF7

&= 获取 newattr.c_lflag 中已有的值,并与值 0xFFFFFEF7 形成按位“与”。最终结果是保留变量中已设置的所有位(ECHOICANON 位除外,这两个位均设置为 0

符号value & ~(bit1 | bit2 …)是一个标准的C习惯用法,用于清除可能或可能未设置在整数中的位。对应的设置代码为value | (bit1 | bit2 …),其中括号是可选的,因为运算符始终相同。您可以使用按位“异或”或 ^ 来翻转位 - 将 1 更改为 0,反之亦然。

关于c - 带有按位运算符的 Termios 语法配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48477989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com