警告634和警告613:MISRA

时间:2014-01-23 11:57:46

标签: c++ lint misra

我有两种情况,我无法解决这些警告..这些是重复性警告

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) 

如何避免这两种警告?

1 个答案:

答案 0 :(得分:0)

第二个应该可以通过在解除引用之前测试flash来修复。

第一个看起来像是一个愚蠢的警告。如果你不能禁用它,也许可以通过测试if (flash)来解决,如果MISRA没有阻止它的愚蠢规则,或者if (flash != SPI_FSH_HANDLE(SPI_NULL))。或者使SPI_NULL成为SPI_FSH_HANDLEvoid*类型的常量,而不是(可能)扩展为0的邪恶宏。