编译器警告:建议在'|'操作数周围算术括号

时间:2015-09-30 01:25:32

标签: c++ gcc

我已经解决了所有其他类似问题,但我无法理解为什么会收到此错误:

warning: suggest parentheses around arithmetic in operand of '|' [-Wparentheses]
 &((~((PERIPHS_IO_MUX_FUNC)<<(PERIPHS_IO_MUX_FUNC_S))))  \

我正在使用xtensa-gcc。以下是代码(来自ESP8266 SDK):

#define PIN_FUNC_SELECT(PIN_NAME, FUNC)  do { \
       WRITE_PERI_REG(PIN_NAME,   \
       (READ_PERI_REG(PIN_NAME)) \
            &((~((PERIPHS_IO_MUX_FUNC)<<(PERIPHS_IO_MUX_FUNC_S))))  \
            |((((FUNC&BIT2)<<(2))|(FUNC&0x3))<<(PERIPHS_IO_MUX_FUNC_S)) );  \
} while (0)

1 个答案:

答案 0 :(得分:1)

&#34;&amp;&#34;和&#34; |&#34;在最后两行中的前导都在括号的同一级别。编译器警告您开发人员可能会对优先级产生一些混淆。