以下代碼在MISRA檢查上失敗。具體錯誤信息是:整數類型是如何隱式轉換的?
(MISRA-C:2004 10.1/R)整數類型的表達式的值應 不被隱式轉換到一個不同的基本類型,如果它是 不是轉換到一個相同的符號性
typedef enum _MyEnum { One, Two } MyEnum;
MyEnum MyVariable;
int foo(void)
{
int result = 1;
if (One == MyVariable) // fails here with MISRA-C:2004 10.1/R
{
result = 2;
}
return result;
}
- 的更寬的整數類型爲何邏輯表達式轉換的α
- 在這裏轉換什麼?
- 爲什麼代碼通過MISRA檢查,當我交換
One
和MyVariable
?
編輯:編譯器是TI 「MSP430 C/C++編譯器V4.0.0」 與包括MISRA規則檢查。
我已經有關於這MISRA thingy壞口袋。你在做什麼是完美的。 – cnicutar
我想第二個編譯器bug假設 – Alex
它是否產生'if(MyVariable == One){}'相同的錯誤/警告? – wildplasser