реклама на сайте
подробности

 
 
> MISRA 2004 && IAR
Dog Pawlowa
сообщение Mar 2 2010, 16:03
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Попробовал скомпилировать работающий проект, включив контроль MISRA...
Результат закономерный.
Но вот вопрос. Даже если убрать мои #undef, ##, наставить скобок на каждую строку после if и проч, не могу избавиться от мысли, что все равно проект под ИАром компилироваться не будет.

Например :
IFG1 &= ~OFIFG;

вызывает
Error[Pm031]: bitwise operations shall not be performed on signed integer types (MISRA C 2004 rule 12.7) D:\Work\Type Kplus\_PCB\k_config.c 18

но константа определена как
#define OFIFG (0x02)

Если исправить родное определение на
#define OFIFG (0x02u)
ошибок нет.

Да, еще
while (IFG1 & OFIFG) ;
Error[Pm029]: this bitwise operation is in a boolean context - logical operators should not be confused with bitwise operators (MISRA C 2004 rule 12.6) D:\Work\Type Kplus\_PCB\k_config.c 23

Это как нужно написать, чтобы извратиться?

А вообще эту опцию кто-нить использует? Как средство повышения надежности программ wink.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Mar 4 2010, 10:44
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



По сути правила MISRA - это сужение разрешённого для использования подмножества языка Си. Только это подмножество так сильно сужается, что на мой вкус (и не только мой) програмировать на нём становится очень неприятно.
Для статического анализа кода может подойти лучше что-то типа Lint.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 06:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01366 секунд с 7
ELECTRONIX ©2004-2016