我在Code Composer Studio中使用MISRA C 2004標準。在外設初始化期間,我總是會遇到按位操作的錯誤。如何刪除固件中按位操作的MISRA C錯誤/警告?
在編譯器.h文件中,定義是這樣的。
#define SFR_8BIT(addr) extern volatile unsigned char addr
SFR_8BIT(REG1);
#define REG2 REG1
現在,在我的代碼,如果我用
REG2 |= 0x01;
的MISRA C突然跳出這些錯誤:
位運算符不得適用於操作數,其背後類型簽名 - #1393-D(MISRA-C:2004 10.1/R)
如果整數類型的表達式不是轉換爲具有相同符號的整數類型,則不應將其隱式轉換爲不同的基礎類型。
我不想改變編譯h文件,我想消除這些警告。
它工作的人..非常感謝! – Chaithra 2012-04-06 13:00:04
如果你不想違反6.3的MISRA C 2004規則,使用uint8_t。REG2 | =(uint8_t)0x01; – 2014-10-07 20:46:39