У меня есть два сценария, где я не могу разрешить эти предупреждения .. Это повторяющиеся предупреждения
1) Warning 634: Strong type mismatch (type 'SPI_FSH_HANDLE') in equality or conditional#define SPI_NULL NULL
SPI_FSH_HANDLE flash;
if (flash != SPI_NULL)
Я пытался проверить состояние NULL, но предупреждения все еще сохранялись.
2)Warning 613: Possible use of null pointer 'flash' in left argument to operator '->'
Часть кода:
if (strstr(flash->name, "M25P")!= SPI_NULL)
Как я могу избежать обоих предупреждений ???
Второй должен быть исправлен путем тестирования flash
перед разыменованием его.
Первое выглядит как глупое предупреждение. Если вы не можете отключить его, возможно, можно исправить путем тестирования if (flash)
если у MISRA нет глупого правила, препятствующего этому, или if (flash != SPI_FSH_HANDLE(SPI_NULL))
иначе. Или, возможно, сделать SPI_NULL
константа типа SPI_FSH_HANDLE
или же void*
, а не злой макрос, который (вероятно) расширяется до 0
,
Других решений пока нет …