Я пытаюсь немного очистить 32-битную переменную с помощью макроса. например.
#define CLEAR_BIT( VAR, BIT ) ( VAR &= ~( BIT ) )
в функции я назвал макрос как
CLEAR_BIT(variable, 0x01 );
В этом случае я получаю нарушение MISRA C-2012 как «Операция присваивания в выражении» « MISRA-C: 2012 R.13.1, R.13.2, R.13.4 "
Если кто-то может сообщить мне, что я делаю неправильно в соответствии с правилами MISRA C?
VAR &= ~( BIT )
- person Paul Ogilvie   schedule 24.06.2019VAR
тоже должны быть скобки. - person alk   schedule 24.06.2019do { … } while (0)
для операторов макросов. - person starblue   schedule 24.06.2019