这段代码报告了三个 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 */ \
} \
}
但我仍然收到前两个错误。需要做些什么来消除这些 Misra C 错误。