【发布时间】:2019-04-04 11:28:09
【问题描述】:
我有一个函数,它以秒为输入并将其转换为时间和日期。但是,我遇到有关数组变量“cumDaysInMonths”可能尚未初始化的警告[MISRA 2012 Rule 9.1,强制]。我已经初始化它,然后循环更新。警告在两条线上并链接。
初始化如下:
unsigned short cumDaysInMonths[MONTHS_IN_A_YEAR] = {0,31,59,90,120,151,181,212,243,273,304,334};
循环内的用法如下:
for(list_index = 2; list_index < MONTHS_IN_A_YEAR; list_index++)
{
cumDaysInMonths[list_index]++;
}
我无法理解此警告的原因以及如何解决?
【问题讨论】:
-
请提供显示实际警告的完整示例。如果您将它们按正确的顺序放置,那么您的两个 sn-ps 都可以。
-
MISRA 2012 规则 9.1 是强制性的吗?
-
此代码与minimal reproducible example 相差甚远。缺少
MONTHS_IN_A_YEAR和list_index的声明。我们也没有关于这两段代码在您的程序中的位置、时间或方式的上下文。你可以有一个全局数组,然后是一个同名的本地数组(错误地)。发布一个完整的程序,而不是两个脱节的sn-ps。 -
@MatthieuBrucher MISRA 是一种编码标准。 9.1 想要初始化变量。
-
@AreebTariq:这个警告是静态分析器发出的吗?
标签: c++ arrays initialization warnings