2014-01-23 131 views
-1

我有兩個場景,我不能夠解決這些警告。這些都是重複的警告警告634和613的警告: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) 

如何避免既警告???

回答

0

第二個應通過測試flash進行解除引用之前解決。

第一個看起來像一個愚蠢的警告。如果你不能禁用它,也許可以通過測試if (flash)來解決,如果MISRA沒有一個愚蠢的規則來阻止它,否則就是if (flash != SPI_FSH_HANDLE(SPI_NULL))。或者可能使SPI_NULLSPI_FSH_HANDLEvoid*的常量,而不是(可能)擴展爲0的邪惡宏。