ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 апреля
1039050 Топик полностью
teap0t (22.09.2020 21:33, просмотров: 377) ответил RxTx на MISRA ругается потому что для безопасности они не рекомендуют пользоваться обще-генеральными типами int, long итд. Какую длину в байтах будут иметь эти типы зачастую предсказать тяжело и это ведет к ошибкам. Вместо этого они рекомендуют пользоваться встроенными типами у которых в точности известен размер: <inttypes.h>
MISRA2004 требует использования стандарта C89 (правило 1.1 обязательное). Я до него пока не дошёл (вернее дошёл, но там столько ошибок вылезает, что я опух слегка). Так что о типе bool придётся забыть. Если я правильно понимаю мисру, то конструкцию if (var) { она пропустит (правило 12.6 обязательное), только если var имеет логический тип (хотя в примере к правилу 16.9 даётся пример корректного кода if( func() ) {}). Тут непонятно, т.к. 

логического типа нет. Вроде где-то видел рекомендацию сравнивать прямо с получением логического результата

if ( 0 == var ) {}

, но где не помню. Т.е. вот такой код мисру устраивает

   typedef enum
   {
      FALSE,
      TRUE
   } bool_TypeDef;

   bool_TypeDef done;

   /* Send the string character by character on LCD */
   do {
      <..>
   } while ( FALSE == done );
Это я, здравствуйте. http://the-epic-file.com/bookshelf.htm