¿Cuál es la necesidad de una matriz con cero elementos?

En el código del kernel de Linux encontré lo siguiente que no puedo entender.

 struct bts_action {
         u16 type;
         u16 size;
         u8 data[0];
 } __attribute__ ((packed));

El código está aquí:http://lxr.free-electrons.com/source/include/linux/ti_wilink_st.h

¿Cuál es la necesidad y el propósito de una matriz de datos con cero elementos?