W jaki sposób typy całkowite są konwertowane niejawnie?

Poniższy kod kończy się niepowodzeniem przy sprawdzaniu MISRA. Konkretny komunikat o błędzie to:

(MISRA-C: 2004 10.1 / R) Wartość wyrażenia typu całkowitoliczbowego nie jest niejawnie konwertowana na inny typ bazowy, jeśli nie jest to konwersja na szerszy typ całkowity tej samej sygnalizacji

<code>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;
}
</code>
Dlaczego konwersja wyrażenia logicznego?Co tu jest konwertowane?Dlaczego kod przechodzi sprawdzanie MISRA, gdy się zamieniamOne iMyVariable?

Edytować: Kompilator to TI "MSP430 C / C ++ Compiler v4.0.0" z włączonym sprawdzaniem reguł MISRA.

questionAnswers(3)

yourAnswerToTheQuestion