2015-09-13 5 views
1

Мой CCS 6.1 ARM компилятор (для LM3Sxxxx Stellaris) бросает предупреждение:Правило Misra C 10.1 - ложное предупреждение?

«МИСР Правило 10.1 Значение выражения целочисленного типа не может быть неявно преобразовано в другой базовый тип, если выражение не является постоянным. и является аргументом функции»

для следующего кода:

static uint32_t diagBaseAddress; 

void diagCbGetBaseAddress(uint32_t * addr); 

... 
diagCbGetBaseAddress(&diagBaseAddress); // line where warning is issued 
... 

Я не вижу проблемы в моем коде. Это ложь или моя ошибка?

+0

Seemss как неправильное предупреждение. Вы уверены, что это весь код? Не существует ли 'const' или' volatile'? – fuz

+0

Нет такого модификатора. Я получил их в каждом вызове функции, где параметры передавались по ссылке, но типы верны, как в этом примере. –

+0

Хм, это странно. – fuz

ответ

1

Да, это ложный позитив. Правило 10.1 MISRA-C: 2004 обеспокоено неявным продвижением типов целочисленных типов. Указатели не имеют никакого отношения к этому правилу.

Хотя убедитесь, что ни одна из соседних строк кода не содержит реальной проблемы, инструмент может просто указывать на неверную строку.

(я могу сказать, что это версия 2004, потому что он упоминает базовый тип. В версии 2012 года, концепция базового типа была заменена.)