まず、これは次のようなものです:整数型は暗黙的にどのように変換されますか? しかし、別の MISRA 警告が表示されます。
コンパイラは MISRA エラーを生成しませんが、静的解析ツールは生成します。進行中の工具メーカーとのチケットがあります。
与えられた:
#include <stdio.h>
enum Color {RED, VIOLET, BLUE, GREEN, YELLOW, ORANGE};
int main(void)
{
enum Color my_color;
my_color = BLUE;
if (my_color == YELLOW) // Generates MISRA violation, see below.
{
printf("Color is yellow.\n");
}
else
{
printf("Color is not yellow.\n");
}
return 0;
}
if
静的分析ツールは、次のステートメントに対して MISRA 違反を生成しています。
MISRA-2004 Rule 10.1 violation: implicitly changing the signedness of an expression.
Converting "4", with underlying type "char" (8 bits, signed),
to type "unsigned int" (32 bits, unsigned) with different signedness.
コンパイラは正しいですか (欠陥を特定していません)、それとも静的解析ツールですか?