C: Estilo recomendado para estruturas de tamanho dinâmico

Preciso transferir pacotes pela Internet cujo comprimento deve ser dinâmic

struct packet
{
  int id;
  int filename_len;
  char filename[];
};

O problema é que matrizes de comprimento zero não são compatíveis com IS

Devo usarchar filename[1]; em vez de? Mas entãosizeof(struct packet) não retornará mais o valor corret