> See the example above: suppose that a compiler is looking at a (p >=
> q) comparison of pointers. Suppose furthermore that in a particular
> case that compiler is smart enough to figure out that q is a pointer
> to the start of an array.
Which array? You can have arrays everywhere in memory, at any address,
ending anywhere.
union {
struct {
char ch1;
char arr1[2];
}
struct {
char arr2[2];
char ch2;
}
struct {
char arr3[3];
}
}
Which is an array, and which is not? is &ch1 an array? and arr1? and
arr2+1? Why would the compiler choose one over another? And what about
arrays defined in other modules? |