为什么下面的代码违反了MISRA 20.2?
#define abs(a) (((a) < (0)) ? -(a) : (a))根据我对主题的理解,20.2不关心预处理器标识符,那么为什么我得到了相同的违规。
发布于 2018-04-27 13:37:49
int abs(int n)是C中的标准库函数,因此不允许您使用名称'abs‘作为自己的函数或宏。
发布于 2018-05-14 19:18:29
这也是在MISRA Forum上被问到的问题,它引出了以下“官方”MISRA C答案:
规则20.2涉及非预处理器名称的声明。即对象、函数名、typedefs。此代码不违反规则20.2,但确实违反了规则20.1,该规则不允许在#define中使用标准库函数。
注:请参阅免责声明的配置文件
https://stackoverflow.com/questions/50045395
复制相似问题