以下代码在MISRA检查中失败。具体的错误消息是:


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;
}
  • 为什么要转换逻辑表达式?
  • 这里转换了什么?
  • 当我交换OneMyVariable时,为什么代码通过MISRA检查?

  • 编辑:编译器是TI“MSP430 C/C++编译器v4.0.0”,其中包含MISRA规则检查。

    最佳答案

    我会怀疑编译器错误。您正在使用什么编译器? This post提到了使用TI的编译器时导致Misra 10.1/R故障的编译器错误。

    关于c - 整数类型如何隐式转换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10582523/

    10-12 02:59