This is an excellent question. Zero-length arrays, also known as flexible arrays, are used to implement variable-length arrays, primarily in structures. That's a little confusing, so let's look at an ...
#define __max(t1, t2, max1, max2, x, y) ({ \ t1 max1 = (x); \ // max1 is a non-const t1 t2 max2 = (y); \ // max2 is a non-const t2 (void) (&max1 == &max2 ...