V570. The variable is assigned to itself

29.04.2011

The analyzer detected a potential error: a variable is assigned to itself. Consider this sample:

dst.m_a = src.m_a;
dst.m_b = dst.m_b;

The value of the 'dst.m_b' variable will not change because of the misprint. This is the correct code:

dst.m_a = src.m_a;
dst.m_b = src.m_b;

The analyzer does not produce the warning every time it detects assignment of a variable to itself. This method is often used to suppress compiler-generated warnings. For example:

int Foo(int foo)
{
  UNREFERENCED_PARAMETER(foo);
  return 1;
}

The UNREFERENCED_PARAMETER macro is defined in the WinNT.h file in the following way:

#define UNREFERENCED_PARAMETER(P)          \
  { \
      (P) = (P); \
  } 

However, the analyzer knows about such cases and will not generate the V570 warning on assignment like this:

(foo) = (foo);
You can look at examples of errors from real projects which were detected by this diagnostic message.