The analyzer found a potential error that may be caused by a misprint. An expression containing the ',' operator is used as an index for an array.
Here is a sample of suspicious code:
float **array_2D;
array_2D[getx() , gety()] = 0;
Most probably, it was meant to be:
array_2D[ getx() ][ gety() ] = 0;
Such errors might appear if the programmer worked earlier with a programming language where array indexes are separated by commas.
Let's look at a sample of an error found by the analyzer in one project:
float **m;
TextOutput &t = ...
...
t.printf("%10.5f, %10.5f, %10.5f,\n%10.5f, %10.5f, %10.5f,\n%10.5f,
%10.5f, %10.5f)",
m[0, 0], m[0, 1], m[0, 2],
m[1, 0], m[1, 1], m[1, 2],
m[2, 0], m[2, 1], m[2, 2]);
Since the printf function of the TextOutput class works with a variable number of arguments, it cannot check whether pointers will be passed to it instead of values of the float type. As a result, we will get rubbish displayed instead of matrix items' values. This is the correct code:
t.printf("%10.5f, %10.5f, %10.5f,\n%10.5f, %10.5f, %10.5f,\n%10.5f,
%10.5f, %10.5f)",
m[0][0], m[0][1], m[0][2],
m[1][0], m[1][1], m[1][2],
m[2][0], m[2][1], m[2][2]);
This diagnostic rule is classified as:
|
You can look at examples of errors detected by the V520 diagnostic. |
Was this page helpful?
Your message has been sent. We will email you at
If you do not see the email in your inbox, please check if it is filtered to one of the following folders: