我已经经历了所有其他类似的问题,但是我不明白为什么会出现此错误:
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)
最佳答案
“&”和“ |”最后两行的前两个括号都位于同一水平。编译器警告您,开发人员可能会对优先级感到困惑。