MISRA C:2012 Dir-4.1 Code design

心不动则不痛 提交于 2019-12-06 06:28:02

2791 Definite: Right hand operand of shift operator is negative or too large.

移位操作过大或者是负数

void f1(unsigned long ul, int si)
{
    if (si > 40)
    {
        ul = ul << si;                /* 2791 */
    }
}

void f2(unsigned long ul, int si)
{
    if (si < 0)
    {
        ul = ul << si;                /* 2791 */
    }
}

2845 Constant: Maximum number of characters to be written is larger than the target buffer size.

#include <string.h>

extern char a[10];
extern char b[11];

void foo (void)
{
  strncpy (a, b, sizeof (b));   /* 2845 */
}

字符数组 a 溢出了

 

 

 

 

2871 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!