可以在块范围内定义变量“EL_adv”[MISRA 2012 规则 8.9,建议] | pclint 9003 和 pclint 9075

问题描述

我在 .c 文件中声明了静态全局变量,如下所示。我正在观察少数静态变量而不是所有静态变量的这个问题。对于某些静态变量,它不会引发任何警告。

static uint8 EL_adv    = 0;

我低于 MISRA 警告:

“可以在块范围内定义变量 'EL_adv' [MISRA 2012 规则 8.9, 咨询] | pclint 9003"

如果我删除静态,那么我会收到如下错误。

uint8 EL_adv    = 0;

"外部符号 'EL_adv' 在没有事先声明的情况下定义 [MISRA 2012 规则 8.4,必需] | pclint 9075"

我正在使用如下所示的代码,我将在 fun1 中获取变量的值,并将在 fun2 和 fun3 中使用该值。

void EL_ReadAll(void)
{
    EL_adv  = getValue(); 
}

void get_my1_EL_Adv()
{
  my1EL_Adv = EL_adv; 
}

void get_my2_EL_Adv()
{
  my2EL_Adv = EL_adv; 
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)