add support for compilers without unspec array len

  There are compilers out there complaining about

  struct foo {
      char *bar;
      unsigned many[];
  };

  Provide tests and workarounds for hopefully all situations.