Я новичок на этом сайте, поэтому, если я испорчу какой-либо из вопросов и правил здесь, я заранее извиняюсь ... Спасибо!
Это чрезвычайно упрощенный пример кода, но я думаю, что он показывает то, о чем я говорю: у меня есть метод C ++, который делает вызов другого метода для проверки значения ...
char m_array[MAX]; // class member, MAX is a #define
foo(unsigned int n)
{
if (validNumber(n)) //test n
{
// do stuff
m_array[n-1] = 0;
}
}
где: validNumber(unsigned int val) { return ((val > 0) && (val <= MAX)); }
Раздражение, которое я испытываю, заключается в том, что отслеживание значений PC Lint, похоже, игнорирует вызов validNumber()
и выдает предупреждение 661 о возможном доступе за пределами указателя (1 за концом данных) оператором ' [ '
Однако, если я сделаю это так, Линт будет счастлив:
if ((n > 0) && (n <= MAX)) //test n
...
Итак, отслеживание значений Lint просто не работает, если тест является вызовом метода?
Еще раз спасибо,
ВЧ