MISRA Discussion Forums

Full Version: Rule 19.1 and assignment of one element of array
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Would the following examples be compliant with rule #19.1?
Code:
int16_t a[20];
void g(void)
{
    int16_t *p = &a[0];
    int16_t *q = &a[0];
    *p = *q;              /* Compliant - exception 1 */
}
void f(void)
{
    int16_t *p = &a[0];
    int16_t *q = &a[1];
    *p = *q;                     // here, is it Compliant ?
}
In function f the *p and *q are considered to be pointing to a different objects and therefore the assigment is compliant with rule 19.1.

This was clarified in DR#042 (http://www.open-std.org/jtc1/sc22/wg14/w...r_042.html) of the C standard, which stated that nonoverlapping portions of an array can be regarded as objects in their own right.