C - 错误:将按位"|"与布尔操作数一起使用



小更新…错误代码来自于notcurses,所以不能更改自从3个月以来,我编译没有问题,但现在

#include <notcurses/notcurses.h>I获得此错误时!

/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.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)

如果没有 ,有没有办法解决这个问题?
  • 修改notcurses.h
  • 删除编译行上的-Werror -Wall -Wextra

我应该重新安装MacOs吗?

不考虑位掩码优化的最简单的修复方法是按照编译器的建议将布尔谓词函数的返回值转换为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)) 

解决警告,并允许编译器使用||来防止分支。

相关内容

  • 没有找到相关文章

最新更新