更新很少... 错误代码来自 notcurses.h 因此无法更改它 三个月以来我编译没有问题,但现在
当
#include <notcurses/notcurses.h>
我收到此错误!
/opt/homebrew/Cellar/notcurses/3.0.9_1/include/notcurses/notcurses.h:205:12: error: use of bitwise '|' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
return !(ncchannel_default_p(channel) | ncchannel_palindex_p(channel));
~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
||
/opt/homebrew/Cellar/notcurses/3.0.9_1/include/notcurses/notcurses.h:205:12: note: cast one or both operands to int to silence this warning
1 error generated.
我不认为这与 notcurses 本身有关...但上周,一切都很好。 我带着笔记本电脑旅行回来,当尝试编译时,我现在遇到了这个错误。
在 notcurses.h 中,错误的函数是:
201 // Is this channel using RGB color?
202 static inline bool
203 ncchannel_rgb_p(uint32_t channel){
# 204 ***// bitwise or is intentional (allows compiler more freedom)***
205 return !(ncchannel_default_p(channel) | ncchannel_palindex_p(channel));
206 }
我尝试更新brew、gcc 和notcurses 我在编译中使用 $(pkg-config --cflags --libs notcurses)
有没有办法解决这个问题
我应该重新安装 MacO 吗?
最简单的修复方法(无需研究位掩码优化)是将布尔谓词函数返回值转换为编译器建议的
int
:
// Is this channel using RGB color?
static inline bool ncchannel_rgb_p(uint32_t channel) {
// bitwise or is intentional (allows compiler more freedom)
return !(+ncchannel_default_p(channel) | +ncchannel_palindex_p(channel));
}
一个可以替代
205 return !(ncchannel_default_p(channel) | ncchannel_palindex_p(channel));
与
205 return !(!(channel & NC_BGDEFAULT_MASK) | (channel & (NC_BGDEFAULT_MASK | NC_BG_PALETTE))
解决警告并允许编译器防止使用
||
进行分支。
不在这里咒骂作者。我希望你能把这个带到我们的 bugtracker 上;几个月前就已经解决了!我们现在正在处理它,作为 https://github.com/dankamongmen/notcurses/pull/2746
的一部分