为什么以下代码违反了MISRA 20.2?
#define abs(a) (((a) < (0)) ? -(a) : (a))
据我从主题中了解,20.2与预处理程序标识符无关,那么为什么我会因此而受到违规。
答案 0 :(得分:2)
int abs(int n)
是C中的标准库函数,因此不允许您使用名称&#39; abs
&#39;为你自己的功能或宏。
答案 1 :(得分:1)
MISRA Forum也提出了这个问题,该问题引起了以下人员的注意:#34; MISRA C
回答:
规则20.2指的是非预处理程序名称的声明。即对象,函数名,typedef。此代码不违反规则20.2,但违反了规则20.1,该规则不允许在#define中使用标准库函数。
注意:请参阅免责声明的个人资料