<div dir="ltr">Hi,<div><br></div><div>the C11 standard provides the following example for variable-length arrays and pointer arithmetics (see §6.5.6:10):</div><div><br></div><div><div>int main() {</div><div>  int n = 4, m = 3;</div><div>  int a[n][m];</div><div>  int(*p)[m] = a;</div><div>  assert(p == &a[0]);</div><div>  p += 1;</div><div>  assert(p == &a[1]);</div><div>  (*p)[2] = 99;</div><div>  assert(a[1][2] == 99);</div><div>  n = p - a;</div><div>  assert(n == 1);</div><div>}</div></div><div><br></div><div>When compiling the program with Clang 3.9, I get the following warning: </div><div><br></div><div>warning: subtraction of pointers to type 'int [m]' of zero size has undefined behavior [-Wpointer-arith]</div><div><br></div><div>This is confusing (and probably a bug), since m is not zero and both pointers refer to the same object. If I define a as int a[n][3] the warning no longer appears.</div><div><br></div><div>- Manuel</div></div>