Page 1 of 1

Rule 19.1 and assignment of one element of array

Posted: Thu Oct 29, 2015 5:41 am
by lovewar
Would the following examples be compliant with rule #19.1?

Code: Select all

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 ?
}

Re: Rule 19.1 and assignment of one element of array

Posted: Wed Nov 18, 2015 1:19 pm
by misra-c
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/ ... r_042.html) of the C standard, which stated that nonoverlapping portions of an array can be regarded as objects in their own right.