Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How do explicit casts of arguments affect 21.15 (amendment 1)?
#1
When rule 21.15 of MISRA C 2012 Amendment 1 refers to the types that pointer arguments are pointers to, how are explicit casts interpreted? Are the types that they are pointers to considered before or after the cast?

Code:
void f(signed char* a, int* b, size_t n) {
    memcmp(a, a, n); // ok - pointers to same type
    memcmp(b, b, n); // ok - pointers to same type
    memcmp((int*)b, (int*)b, n); // ok - same type and cast has no effect
    memcmp((int*)a, (int*)a, n); // ok? - cast to different pointer type, arguments match before and after but with different matching types
    memcmp(a, b, n); // violation - pointers to different types
    memcmp((int*)a, b, n); // violation? - types only match due to pointer cast
    memcmp((float*)a, (float*)b, n); // violation? - different pointer types cast to third common pointer type
    memcmp((short*)a, a, n); // violation? - original pointer types match before cast
}


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)