我是这个网站的新手,所以如果我在这里搞砸了任何提问的礼仪,我提前道歉......谢谢!
这是极其简化的示例代码,但我认为它显示了我在说什么:我有一个 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 超出数据结尾)
但是,如果我这样做,Lint 很高兴:
if ((n > 0) && (n <= MAX)) //test n
...
那么,如果测试是方法调用,Lint 的值跟踪是否不起作用?
再次感谢,
高频