CodeWarrior v5.2 で開発していたアプリケーションを、ARM C コンパイラ v5.06 を使用する Keil uVision v5.25 に移行しています。
コード全体で、プロジェクトのファイルでbool
次のように定義されているブール値を表すために使用しました。types.h
typedef enum _bool
{
false = 0,
true = 1
} bool;
コードをコンパイルしようとすると、コンパイラは、比較の結果をこの型の変数に暗黙的に割り当てる行に関する警告を生成します。
src\c\drivers\motor.c(168): warning: #188-D: enumerated type mixed with another type
const bool motorStopped = timeSinceLastEvent > maxPulseWidth;
src\c\drivers\motor.c(169): warning: #188-D: enumerated type mixed with another type
const bool motorStalled = motorStopped && isMotorDriven();
これらの警告が生成される理由を理解しています。次のように明示的にキャストすることで、これらの警告を抑制できることを認識していますbool
。
const bool motorStopped = (bool)(timeSinceLastEvent > maxPulseWidth);
ただし、ブール条件ごとにこれを行うのはかなり見苦しいです。bool
列挙型と他の型の混合に関する警告を完全に無効にすることなく、Keil uVision / ARM コンパイラを構成 (またはコードを変更) して警告を生成しないようにする方法があるかどうか疑問に思っていました。
これらは、コンパイラを構成するために使用できるオプションです。