Я новичок на этом сайте, поэтому, если я нарушу правила этикета, я заранее прошу прощения ... Спасибо!
Это чрезвычайно упрощенный пример кода, но я думаю, он показывает, о чем я говорю: у меня есть метод 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 за пределами данных) оператором '[' strong >
Однако, если я сделаю это так, Линт будет счастлив:
if ((n > 0) && (n <= MAX)) //test n
...
Итак, не работает ли отслеживание значений Lint, если тест является вызовом метода?
Еще раз спасибо,
HF