2

Autosar_SWS によると、ブール値は でなければなりませんunsigned char。しかし、MISRA ルール 10.1 (変換違反)、ルール 12.6 (有効なブール値) など、多くの MISRA 違反がコンポジションに含まれています。

以下のように、アプリケーションの BOOLEAN を再定義するかどうかを知りたいです。

#ifdefine BOOLEAN_T
#undefine BOOLEAN_T

typedef struct {
                 unsigned char TRUE  : 1;
                 unsigned char FALSE : 1;
               } BOOLEAN_T;    

#define TRUE 1;
#define False 0;

#endif

安全上の懸念とその結果はどうなりますか?

4

3 に答える 3

1

2 ビットの構造体を使用して 1 つのビット量を表す場合、ランダムなビット フリップにより、50% の確率で真/偽の値が真でも偽でもない値に変更されます。

安全性が重要なソフトウェアを作成する前に、C 言語の学習にもう少し時間を費やしてください。

于 2014-02-07T19:41:00.700 に答える
-1

安全のために、たとえばビットパターンを使用できます。

unsigned char data = 0x55 << (input_bit & 1);

switch (data):/* instead of if() */
 case 0xaa:
  /*true*/
  break;
 case 0x55:
  /*false*/
  break;
 case default:
  /*exception*/
  break;
}
于 2014-02-07T19:39:57.110 に答える