我是这个网站的新手,所以如果我搞砸任何问题 - 在这里问礼仪,我提前道歉...谢谢!Gimpel的PC皮棉价值跟踪
这是非常简单的示例代码,但我认为这显示了我说的:我有一个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的价值跟踪只是没有如果测试工作是一个方法调用?再次
感谢,
HF
感谢您的建议!如果我们最终要重新访问这个问题,我会尝试使用-passes技巧。现在虽然我们刚刚结束了#定义有效检查,当然这只是把它放在一起,林特喜欢它 – 2012-05-18 17:08:42