このコードは、3 つの misrac エラーを報告します。
- 不適切なマクロ展開
- 関数のようなマクロ定義
- 括弧なしのマクロ パラメータ
元のコードは次のとおりです。
#define Wait(a, b) \
if (READ(b+0x1U)) \
{ \
while ((a & Write(b))) \
{ \
/* Do nothing - Busy wait */ \
} \
}
Here READ(b) is a macro and Write(b) is a function with no Misra C error.
エラーを削除するために変更しようとしています
#define Wait(a, b) \
if ((uint32_t)0U != READ((b)+0x1U)) \
{ \
while ((uint32_t)0U != ((uint32_t)(a) & Write((uint32_t)(b)))) \
{ \
/* Do nothing - Busy wait */ \
} \
}
しかし、まだ最初の 2 つのエラーが発生しています。これらの Misra C エラーを取り除くために何をする必要がありますか。