Это не незаконно по определению, но зависит от языка. С Java все в порядке, в зависимости от компилятора, используемого в C, у вас могут быть проблемы с ним, но в целом он тоже работает.
Несколько связанное обсуждение C ++ и массивов нулевой длины: Массив нулевой длины