V556. The values of different enum types are compared.


The analyzer detected a potential error: code contains comparison of enum values which have different types.

Consider a sample:

enum ErrorTypeA { E_OK, E_FAIL };
enum ErrorTypeB { E_ERROR, E_SUCCESS };
void Foo(ErrorTypeB status) {
  if (status == E_OK)
  { ... }
}

The programmer used a wrong name in the comparison by accident, so the program's logic is disrupted. This is the correct code:

void Foo(ErrorTypeB status) {
   if (status == E_SUCCESS)
  { ... }
}

Comparison of values of different enum types is not necessarily an error, but you must review such code.

According to Common Weakness Enumeration, potential errors found by using this diagnostic are classified as CWE-697.

You can look at examples of errors detected by the V556 diagnostic.


Do you make errors in the code?

Check your code
with PVS-Studio

Static code analysis
for C, C++, and C#

goto PVS-Studio;