>
>
>
V2528. MISRA. The comma operator should…


V2528. MISRA. The comma operator should not be used.

This diagnostic rule is based on the software development guidelines developed by MISRA (Motor Industry Software Reliability Association).

Avoid using the 'comma' operator as it may be confusing to code maintainers.

Look at the following example:

int foo(int x, int y) { .... }
foo( ( 0, 3), 12 );

This code could be confusing to a programmer who is not familiar with the function's signature. They could think that the function is called with three arguments, but it is not so: the 'comma' operator in the '(0, 3)' expression will evaluate the left and right arguments and return the latter. As a result, the function call will actually look like this:

foo( 3, 12 );

This warning is issued in other cases as well, for example:

int myMemCmp(const char *s1, const char *s2, size_t N)
{
  for (; N > 0; ++s1, ++s2, --N) { .... }
}

This diagnostic is classified as:

  • MISRA-C-12.3
  • MISRA-CPP-5.18.1