Wouldn't the zero-length array potentially run into other memory?
edit: I suppose one could use for globals or on the stack by casting a byte array ... I would find that to be unspeakably ugly but I don't write much C.
C99 has its own "zero sized array" thing but it is a different syntax.