Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How do explicit casts of arguments affect 21.15 (amendment 1)?
#2
Rule 21.15 applies to the types after casting.
Code:
void f(signed char* a, int* b, size_t n) {
    memcmp(a, a, n);                   // Compliant
    memcmp(b, b, n);                   // Compliant
    memcmp((int*)b, (int*)b, n);       // Compliant
    memcmp((int*)a, (int*)a, n);       // Compliant - but violates Rule 11.3
    memcmp(a, b, n);                   // Non-Compliant
    memcmp((int*)a, b, n);             // Compliant - but violates Rule 11.3
    memcmp((float*)a, (float*)b, n);   // Compliant - but violates Rules 11.3 and  21.16
    memcmp((short*)a, a, n);           // Non-Compliant - and also violates Rule 11.3
}
Posted by and on behalf of the MISRA C Working Group


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)