我有两种情况,我无法解决这些警告..这些是重复性警告
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)
如何避免这两种警告?
答案 0 :(得分:0)
第二个应该可以通过在解除引用之前测试flash
来修复。
第一个看起来像是一个愚蠢的警告。如果你不能禁用它,也许可以通过测试if (flash)
来解决,如果MISRA没有阻止它的愚蠢规则,或者if (flash != SPI_FSH_HANDLE(SPI_NULL))
。或者使SPI_NULL
成为SPI_FSH_HANDLE
或void*
类型的常量,而不是(可能)扩展为0
的邪恶宏。