我已经经历了所有其他类似的问题,但是我不明白为什么会出现此错误:

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)

最佳答案

“&”和“ |”最后两行的前两个括号都位于同一水平。编译器警告您,开发人员可能会对优先级感到困惑。

10-04 20:20